import { describe, expect, it } from "vitest"; import { naechsteOrgnummer } from "@/lib/org-nummer"; // Der Vorschlag darf lieber schweigen als raten: eine erfundene, aber // plausibel aussehende Nummer prüft niemand nach, und sie landet im führenden // System des Kunden als Kennung, die es dort nicht gibt. describe("naechsteOrgnummer", () => { it("zählt die höchste Nummer hoch und behält die Breite", () => { expect(naechsteOrgnummer(["OE-0001", "OE-0013", "OE-0080"])).toBe("OE-0081"); }); it("richtet sich nach der höchsten, nicht nach der letzten in der Liste", () => { expect(naechsteOrgnummer(["OE-0080", "OE-0001", "OE-0013"])).toBe("OE-0081"); }); it("kommt auch ohne Vorspann aus", () => { expect(naechsteOrgnummer(["10000001", "10000002"])).toBe("10000003"); }); it("verlängert, statt eine vergebene Nummer vorzuschlagen", () => { // 99 + 1 passt nicht mehr in zwei Stellen. Abgeschnitten käme „00“ // heraus, und das gibt es bereits. expect(naechsteOrgnummer(["OE-98", "OE-99"])).toBe("OE-100"); }); it("schweigt bei zwei Systematiken nebeneinander", () => { expect(naechsteOrgnummer(["OE-0001", "B7"])).toBeUndefined(); }); it("schweigt, wenn eine Nummer gar nicht auf Ziffern endet", () => { expect(naechsteOrgnummer(["OE-0001", "Vertrieb"])).toBeUndefined(); }); it("schweigt im leeren Bestand", () => { expect(naechsteOrgnummer([])).toBeUndefined(); }); });