import { describe, expect, it } from "vitest"; import { brauchtAufenthaltstitel, FREIZUEGIGKEIT, UN_COUNTRIES } from "@/lib/countries"; // Wer keinen Aufenthaltstitel braucht, soll auch nicht danach gefragt werden. // Die Liste entscheidet darüber, ob die Felder im Formular überhaupt // erscheinen und ob sie beim Wechsel der Staatsbürgerschaft geleert werden — // die Datenbank prüft diese Kopplung bewusst nicht. describe("FREIZUEGIGKEIT", () => { it("umfasst EU, EWR und die Schweiz", () => { expect(FREIZUEGIGKEIT).toHaveLength(31); // 27 + Island/Liechtenstein/Norwegen + Schweiz for (const land of ["Österreich", "Deutschland", "Kroatien", "Zypern", "Island", "Liechtenstein", "Norwegen", "Schweiz"]) { expect(FREIZUEGIGKEIT).toContain(land); } }); it("nennt nur Länder, die es im Auswahlfeld auch gibt", () => { // Sonst stünde ein Land auf der Liste, das niemand auswählen kann — die // Regel liefe für einen Wert, der nie vorkommt. for (const land of FREIZUEGIGKEIT) expect(UN_COUNTRIES).toContain(land); }); it("führt kein Land doppelt", () => { expect(new Set(FREIZUEGIGKEIT).size).toBe(FREIZUEGIGKEIT.length); }); it("hält Drittstaaten heraus", () => { for (const land of ["Türkei", "Serbien", "Bosnien und Herzegowina", "Vereinigtes Königreich"]) { expect(FREIZUEGIGKEIT).not.toContain(land); } }); }); describe("brauchtAufenthaltstitel", () => { it("verneint bei Freizügigkeit", () => { for (const land of ["Österreich", "Deutschland", "Schweiz", "Norwegen"]) { expect(brauchtAufenthaltstitel(land)).toBe(false); } }); it("bejaht bei Drittstaaten", () => { // Diese drei stellen im Bestand rund achtzig Personen. for (const land of ["Türkei", "Serbien", "Bosnien"]) { expect(brauchtAufenthaltstitel(land)).toBe(true); } }); it("verneint bei fehlender Angabe", () => { // Eine fehlende Staatsbürgerschaft ist kein Anlass, einen Titel zu // verlangen — sie ist ein Anlass, sie zu erfassen. for (const leer of ["", " ", null, undefined]) { expect(brauchtAufenthaltstitel(leer)).toBe(false); } }); it("stört sich nicht an Leerzeichen am Rand", () => { expect(brauchtAufenthaltstitel(" Österreich ")).toBe(false); }); });