Beim git mv in 7ab74f8 blieb die sed-Korrektur des Imports unstaged; im Repo
zeigte der Test noch auf ../../mobile/src/lib/date-format.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.7 KiB
TypeScript
44 lines
1.7 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { addYearsToDisplayDate, displayDateToIso, formatDateInput, isoToDisplayDate } from "./date-format";
|
|
|
|
describe("mobile date-format", () => {
|
|
it("displays ISO dates with dots", () => {
|
|
expect(isoToDisplayDate("2026-10-04")).toBe("04.10.2026");
|
|
});
|
|
|
|
it("parses dotted, dashed and slashed input to ISO", () => {
|
|
expect(displayDateToIso("04.10.2026")).toBe("2026-10-04");
|
|
expect(displayDateToIso("04-10-2026")).toBe("2026-10-04");
|
|
expect(displayDateToIso("04/10/2026")).toBe("2026-10-04");
|
|
});
|
|
|
|
it("pads one-digit day and month", () => {
|
|
expect(displayDateToIso("4.1.2026")).toBe("2026-01-04");
|
|
});
|
|
|
|
it("rejects impossible calendar dates and garbage", () => {
|
|
expect(displayDateToIso("31.02.2026")).toBeNull();
|
|
expect(displayDateToIso("2026-10-04")).toBeNull();
|
|
expect(displayDateToIso("abc")).toBeNull();
|
|
});
|
|
|
|
it("masks typed digits as DD.MM.YYYY", () => {
|
|
expect(formatDateInput("04")).toBe("04");
|
|
expect(formatDateInput("041")).toBe("04.1");
|
|
expect(formatDateInput("0410")).toBe("04.10");
|
|
expect(formatDateInput("04102026")).toBe("04.10.2026");
|
|
expect(formatDateInput("041020269")).toBe("04.10.2026");
|
|
});
|
|
|
|
it("lets backspace remove a trailing separator instead of re-adding it", () => {
|
|
expect(formatDateInput("04.")).toBe("04");
|
|
});
|
|
|
|
it("suggests a next due date some years ahead", () => {
|
|
expect(addYearsToDisplayDate("04.10.2026", 1)).toBe("04.10.2027");
|
|
expect(addYearsToDisplayDate("04.10.2026", 3)).toBe("04.10.2029");
|
|
expect(addYearsToDisplayDate("29.02.2028", 1)).toBe("01.03.2029");
|
|
expect(addYearsToDisplayDate("", 1)).toBeNull();
|
|
});
|
|
});
|