import { describe, expect, it } from "vitest"; import { kboTodayKst } from "../../src/types/dateString"; // KST 벽시계 시각으로 Date를 만든다(UTC+09:00 명시). 실행 환경 TZ와 무관. function kst(iso: string): Date { return new Date(`${iso}+09:00`); } describe("kboTodayKst — 새벽 03:00(KST) 컷오프", () => { it("02:59이면 직전일 (일일 갱신 02:00 직후 버퍼)", () => { expect(kboTodayKst(kst("2026-06-30T02:59:00"))).toBe("2026-06-29"); }); it("00:00(자정)이면 직전일", () => { expect(kboTodayKst(kst("2026-06-30T00:00:00"))).toBe("2026-06-29"); }); it("03:00 정각이면 당일 (컷오프 경계 포함)", () => { expect(kboTodayKst(kst("2026-06-30T03:00:00"))).toBe("2026-06-30"); }); it("03:01이면 당일", () => { expect(kboTodayKst(kst("2026-06-30T03:01:00"))).toBe("2026-06-30"); }); it("정오면 당일", () => { expect(kboTodayKst(kst("2026-06-30T12:00:00"))).toBe("2026-06-30"); }); it("23:59이면 당일", () => { expect(kboTodayKst(kst("2026-06-30T23:59:00"))).toBe("2026-06-30"); }); it("월초 새벽이면 전월 말일로 넘어간다", () => { expect(kboTodayKst(kst("2026-07-01T02:00:00"))).toBe("2026-06-30"); }); it("연초 새벽이면 전년 말일로 넘어간다", () => { expect(kboTodayKst(kst("2026-01-01T01:00:00"))).toBe("2025-12-31"); }); });