import { describe, expect, it } from "vitest"; import { fristVerstrichen, tagesbeginn } from "@/lib/fristen"; /** * Die Grenze zwischen „heute faellig“ und „ueberfaellig“ (#015). * * Der Review hat genau hier zugeschlagen: verglichen wurde mit dem Augenblick * statt mit dem Tagesbeginn, und ein heute faelliger Lauf stand ab zwei Uhr * morgens in Warnfarbe. Der alte Test kannte nur „gestern“ und „morgen“ — die * Grenze selbst blieb ungeprueft, und genau dort sass der Fehler. */ describe("Fristen", () => { const HEUTE_FRUEH = new Date(2026, 8, 25, 2, 0, 0); const HEUTE_SPAET = new Date(2026, 8, 25, 23, 30, 0); it("zählt den heutigen Tag nicht als verstrichen", () => { const heuteMitternacht = new Date(2026, 8, 25, 0, 0, 0); expect(fristVerstrichen(heuteMitternacht, HEUTE_FRUEH)).toBe(false); expect(fristVerstrichen(heuteMitternacht, HEUTE_SPAET)).toBe(false); }); it("zählt gestern als verstrichen, egal zu welcher Uhrzeit", () => { const gestern = new Date(2026, 8, 24, 23, 59, 0); expect(fristVerstrichen(gestern, HEUTE_FRUEH)).toBe(true); expect(fristVerstrichen(gestern, HEUTE_SPAET)).toBe(true); }); it("zählt morgen nicht als verstrichen", () => { expect(fristVerstrichen(new Date(2026, 8, 26, 0, 0, 0), HEUTE_SPAET)).toBe(false); }); it("nimmt eine fehlende Frist als nicht verstrichen", () => { expect(fristVerstrichen(null, HEUTE_FRUEH)).toBe(false); expect(fristVerstrichen(undefined, HEUTE_FRUEH)).toBe(false); }); it("gibt den Tagesbeginn in lokaler Zeit zurück", () => { const beginn = tagesbeginn(HEUTE_SPAET); expect(beginn.getFullYear()).toBe(2026); expect(beginn.getMonth()).toBe(8); expect(beginn.getDate()).toBe(25); expect(beginn.getHours()).toBe(0); expect(beginn.getMinutes()).toBe(0); }); });