import { createMemoryRouter, RouterProvider } from "react-router";
import { describe, expect, test } from "vitest";
import { render } from "vitest-browser-react";
import { RelativeTime } from "./RelativeTime";
const FORMAT_OPTIONS: Intl.DateTimeFormatOptions = {
hour: "numeric",
minute: "numeric",
day: "numeric",
month: "numeric",
timeZoneName: "short",
};
function renderRelativeTime(timestamp: number) {
const router = createMemoryRouter(
[
{
path: "/",
element: 3 days ago,
},
],
{ initialEntries: ["/"] },
);
return render();
}
function expectedTitle(timestamp: number) {
const language =
navigator.languages.find(
(lang) => lang.split("-")[0].toLowerCase() === "en",
) ?? "en";
return new Intl.DateTimeFormat(language, FORMAT_OPTIONS).format(timestamp);
}
describe("RelativeTime", () => {
test("tooltip shows the date the millisecond timestamp points to", async () => {
const timestamp = new Date("2025-08-02T12:00:00Z").getTime();
const screen = await renderRelativeTime(timestamp);
const abbr = screen.getByText("3 days ago");
await expect.element(abbr).toBeVisible();
expect(abbr.element().getAttribute("title")).toBe(expectedTitle(timestamp));
});
});