mmday-firebase/tests/types/dateString.test.ts
윤정민 e980410858 Add kboTodayKst helper and support "today" alias in KBO endpoints
- KBO 데이터 갱신 시점(02:00)을 고려하여 03:00 이전 요청 시 전일 데이터를 반환하도록 `kboTodayKst` 유틸리티를 추가했습니다.
- `kboHandlers`에서 `day` 파라미터에 "today" 값을 전달할 경우, 위 컷오프 로직이 적용된 날짜를 자동으로 계산하도록 개선했습니다.
- 신규 테스트 코드를 통해 새벽 시간대 경계값에서도 날짜가 정확하게 계산되는지 검증했습니다.
2026-06-30 09:59:29 +09:00

42 lines
1.4 KiB
TypeScript

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");
});
});