forked from Yara724/api
40 lines
1.5 KiB
TypeScript
40 lines
1.5 KiB
TypeScript
import { parseIranLocalDateTime } from "./iran-datetime";
|
|
|
|
describe("parseIranLocalDateTime", () => {
|
|
it("parses YYYY-MM-DD + HH:MM as Iran local (not server local)", () => {
|
|
const instant = parseIranLocalDateTime("2025-05-16", "18:28");
|
|
expect(instant).not.toBeNull();
|
|
// 18:28 Iran = 14:58 UTC
|
|
expect(instant!.toISOString()).toBe("2025-05-16T14:58:00.000Z");
|
|
});
|
|
|
|
it("parses naive ISO datetime as Iran local", () => {
|
|
const instant = parseIranLocalDateTime("2025-05-16T18:28");
|
|
expect(instant!.toISOString()).toBe("2025-05-16T14:58:00.000Z");
|
|
});
|
|
|
|
it("respects explicit UTC offset in string", () => {
|
|
const instant = parseIranLocalDateTime("2025-05-16T14:58:00.000Z");
|
|
expect(instant!.toISOString()).toBe("2025-05-16T14:58:00.000Z");
|
|
});
|
|
|
|
it("applies a separately supplied time to an explicit-offset date", () => {
|
|
const instant = parseIranLocalDateTime(
|
|
"2025-05-16T00:00:00.000Z",
|
|
"18:28",
|
|
);
|
|
expect(instant!.toISOString()).toBe("2025-05-16T14:58:00.000Z");
|
|
});
|
|
|
|
it("combines Date calendar day in Iran with accidentTime", () => {
|
|
const dateOnly = new Date("2025-05-16T00:00:00.000Z");
|
|
const instant = parseIranLocalDateTime(dateOnly, "18:28");
|
|
expect(instant!.toISOString()).toBe("2025-05-16T14:58:00.000Z");
|
|
});
|
|
|
|
it("rejects out-of-range hours and minutes", () => {
|
|
expect(parseIranLocalDateTime("2025-05-16", "24:00")).toBeNull();
|
|
expect(parseIranLocalDateTime("2025-05-16", "12:60")).toBeNull();
|
|
});
|
|
});
|