forked from Yara724/api
fix claim validation and expert branch scoping
This commit is contained in:
@@ -18,9 +18,22 @@ describe("parseIranLocalDateTime", () => {
|
||||
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();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -26,6 +26,7 @@ function normalizeTimeToHms(time: string): string | null {
|
||||
const hh = m[1].padStart(2, "0");
|
||||
const mm = m[2];
|
||||
const ss = m[3] ?? "00";
|
||||
if (Number(hh) > 23 || Number(mm) > 59 || Number(ss) > 59) return null;
|
||||
return `${hh}:${mm}:${ss}`;
|
||||
}
|
||||
|
||||
@@ -56,7 +57,12 @@ export function parseIranLocalDateTime(
|
||||
|
||||
if (/[zZ]|[+-]\d{2}:?\d{2}$/.test(raw)) {
|
||||
const d = new Date(raw);
|
||||
return Number.isNaN(d.getTime()) ? null : d;
|
||||
if (Number.isNaN(d.getTime())) return null;
|
||||
const cleanTime = (time ?? "").trim();
|
||||
if (!cleanTime) return d;
|
||||
const timeHms = normalizeTimeToHms(cleanTime);
|
||||
if (!timeHms) return null;
|
||||
return parseIranLocalIso(gregorianDateInIran(d), timeHms);
|
||||
}
|
||||
|
||||
const naive = raw.match(NAIVE_ISO_DATETIME_RE);
|
||||
|
||||
Reference in New Issue
Block a user