import { describe, expect, it } from "vitest";
import { BUSINESS_TIME_ZONE, formatDateOnly, formatDateOnlyIso, formatDateTimeInBusinessTimezone } from "./format";

describe("date formatting", () => {
  it("formats date-only strings without timezone shifting", () => {
    expect(formatDateOnly("2026-06-16")).toBe("Jun 16, 2026");
    expect(formatDateOnly("2026-06-13")).toBe("Jun 13, 2026");
    expect(formatDateOnly("2026-01-01")).toBe("Jan 1, 2026");
    expect(formatDateOnly("2026-01-10")).toBe("Jan 10, 2026");
  });

  it("formats labor work dates from local calendar date objects", () => {
    expect(formatDateOnly(new Date(2026, 0, 1))).toBe("Jan 1, 2026");
    expect(formatDateOnly(new Date(2026, 0, 10))).toBe("Jan 10, 2026");
    expect(formatDateOnlyIso(new Date(2026, 5, 16))).toBe("2026-06-16");
  });

  it("formats real timestamps in the business timezone", () => {
    expect(BUSINESS_TIME_ZONE).toBe("America/New_York");
    const formatted = formatDateTimeInBusinessTimezone(new Date("2026-06-17T15:30:00.000Z"));
    expect(formatted).toContain("Jun 17, 2026");
    expect(formatted).toMatch(/11:30\sAM/);
  });
});
