Die neue Kachel "Aktives Dienstverhaeltnis" verlinkte auf
?status=Aktiv&status=Karenz. Die Mitarbeiterliste liest den Parameter aber
als *eine* Zeichenkette und trennt selbst an Kommas — zweimal uebergeben
macht Next daraus ein Array, und `.split(",")` lief dagegen. Sichtbar war
nur "Diese Ansicht konnte nicht geladen werden".
Die Kachel schreibt jetzt status=Aktiv,Karenz. Dazu glaettet die Seite alle
ihre Parameter: eine Adresse kommt nicht nur aus der eigenen Anwendung, sie
steht in Lesezeichen und in E-Mails, und ?q=a&q=b haette sie genauso
gefaellt.
Zwei Anmerkungen von Max:
* Die Reihenfolge der Wochentage wurde beim Speichern mitgenommen — "Mo,
Di" und "Di, Mo" waren zwei Werte fuer dieselbe Aussage. Da
change_employee_data die Arbeitstage als zusammengefuegte Zeichenkette
vergleicht, erzeugte jedes Nachsehen und Wiederherstellen eine
Vertragsaenderung in der Akte und einen Protokolleintrag — ueber nichts.
Jetzt sortiert gespeichert (lib/wochentage.ts, an einer Stelle statt in
vier Kopien), auch im Massenimport. Der Bestand richtet sich beim
naechsten Speichern von selbst.
* "Beguenstigt behindert" steht jetzt als eingerueckter Unterpunkt des
Kuendigungsschutzes statt als eigener Block daneben. In der Datenbank
bleiben es getrennte Felder, und das mit Absicht: eine Kopplung liesse
jede Korrektur am Personenkreis scheitern, solange der Grad noch
dransteht.
41 lines
1.8 KiB
TypeScript
41 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { sortiereWochentage, WOCHENTAGE } from "@/lib/wochentage";
|
|
|
|
// Der Anlass: „Mo, Di" und „Di, Mo" waren zwei verschiedene gespeicherte
|
|
// Werte für dieselbe Aussage, weil die Klickreihenfolge mit abgelegt wurde.
|
|
// change_employee_data vergleicht die Arbeitstage als zusammengefügte
|
|
// Zeichenkette — wer die Tage nur nachsah und wiederherstellte, erzeugte
|
|
// damit eine Vertragsänderung in der Personalakte über nichts.
|
|
|
|
describe("sortiereWochentage", () => {
|
|
it("bringt die Tage in Wochenreihenfolge", () => {
|
|
expect(sortiereWochentage(["Di", "Mo"])).toEqual(["Mo", "Di"]);
|
|
expect(sortiereWochentage(["Fr", "Mi", "Mo"])).toEqual(["Mo", "Mi", "Fr"]);
|
|
});
|
|
|
|
it("liefert für dieselbe Menge immer dasselbe Ergebnis", () => {
|
|
// Das ist die eigentliche Zusicherung: die Reihenfolge der Eingabe darf
|
|
// am Ergebnis nichts ändern, sonst kommt der Scheinunterschied zurück.
|
|
expect(sortiereWochentage(["Di", "Mo", "Fr"])).toEqual(sortiereWochentage(["Fr", "Di", "Mo"]));
|
|
});
|
|
|
|
it("wirft Dubletten weg", () => {
|
|
expect(sortiereWochentage(["Mo", "Mo", "Di"])).toEqual(["Mo", "Di"]);
|
|
});
|
|
|
|
it("lässt die volle Woche unverändert", () => {
|
|
expect(sortiereWochentage([...WOCHENTAGE])).toEqual([...WOCHENTAGE]);
|
|
});
|
|
|
|
it("verschluckt Unbekanntes nicht, sondern hängt es an", () => {
|
|
// Die Spalte ist ein text[] ohne Prüfung. Was der Massenimport einmal
|
|
// hineingeschrieben hat, darf eine Sortierung nicht stillschweigend
|
|
// löschen — sichtbar falsch ist besser als unsichtbar weg.
|
|
expect(sortiereWochentage(["Fr", "Feiertag", "Mo"])).toEqual(["Mo", "Fr", "Feiertag"]);
|
|
});
|
|
|
|
it("kommt mit einer leeren Liste zurecht", () => {
|
|
expect(sortiereWochentage([])).toEqual([]);
|
|
});
|
|
});
|