Add weekDateRange helper for flight schedule note
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { getWeekDateRange } from "./weekDateRange.js";
|
||||
|
||||
describe("getWeekDateRange", () => {
|
||||
it("returns Monday/Sunday for a mid-week date", () => {
|
||||
// 2026-04-15 is a Wednesday
|
||||
const result = getWeekDateRange("2026-04-15T10:00:00");
|
||||
expect(result.start).toBe("13.04.2026");
|
||||
expect(result.end).toBe("19.04.2026");
|
||||
});
|
||||
|
||||
it("returns Monday/Sunday for a Sunday input", () => {
|
||||
const result = getWeekDateRange("2026-04-19T10:00:00");
|
||||
expect(result.start).toBe("13.04.2026");
|
||||
expect(result.end).toBe("19.04.2026");
|
||||
});
|
||||
|
||||
it("returns Monday/Sunday for a Monday input", () => {
|
||||
const result = getWeekDateRange("2026-04-13T10:00:00");
|
||||
expect(result.start).toBe("13.04.2026");
|
||||
expect(result.end).toBe("19.04.2026");
|
||||
});
|
||||
|
||||
it("returns empty strings for invalid input", () => {
|
||||
expect(getWeekDateRange("not-a-date")).toEqual({ start: "", end: "" });
|
||||
});
|
||||
|
||||
it("returns empty strings for undefined input", () => {
|
||||
expect(getWeekDateRange(undefined)).toEqual({ start: "", end: "" });
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
import { parseISO, startOfISOWeek, endOfISOWeek, format, isValid } from "date-fns";
|
||||
|
||||
/**
|
||||
* Given a scheduled local-time ISO string, return the ISO-week bounds
|
||||
* (Monday/Sunday) as `dd.MM.yyyy` formatted strings.
|
||||
* Returns `{ start: "", end: "" }` for invalid or missing input.
|
||||
*/
|
||||
export function getWeekDateRange(scheduledLocal: string | undefined): {
|
||||
start: string;
|
||||
end: string;
|
||||
} {
|
||||
if (!scheduledLocal) return { start: "", end: "" };
|
||||
const d = parseISO(scheduledLocal);
|
||||
if (!isValid(d)) return { start: "", end: "" };
|
||||
return {
|
||||
start: format(startOfISOWeek(d), "dd.MM.yyyy"),
|
||||
end: format(endOfISOWeek(d), "dd.MM.yyyy"),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user