import { describe, expect, test } from "bun:test";
import { addDays } from "date-fns";
import { formatEventRangeLabel, formatEventStartLabel } from "@/lib/event-date-format";

describe("event-date-format", () => {
	test("formats a timed start-only event with a friendly day label", () => {
		const today = new Date();
		today.setHours(10, 0, 0, 0);

		expect(formatEventStartLabel(today.toISOString(), false)).toContain("Today · 10:00");
	});

	test("formats a same-day timed range without native locale helpers", () => {
		const today = new Date();
		today.setHours(10, 0, 0, 0);
		const end = new Date(today);
		end.setHours(11, 30, 0, 0);

		expect(
			formatEventRangeLabel({ start: today.toISOString(), end: end.toISOString(), allDay: false }),
		).toContain("10:00–11:30");
	});

	test("formats all-day events with tomorrow labels when applicable", () => {
		const tomorrow = addDays(new Date(), 1);
		tomorrow.setHours(0, 0, 0, 0);

		expect(
			formatEventRangeLabel({ start: tomorrow.toISOString(), end: undefined, allDay: true }),
		).toBe("Tomorrow");
	});
});
