Die Kachel verwies auf eine Adresse, die die Liste nicht lesen konnte
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.
This commit is contained in:
40
tests/unit/wochentage.test.ts
Normal file
40
tests/unit/wochentage.test.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
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([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user