Strip orphan straight-quote pairings in JSX descriptions
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-school (push) Successful in 30s
CI / test-go-edu-search (push) Successful in 31s
CI / test-python-klausur (push) Failing after 2m35s
CI / test-python-agent-core (push) Successful in 20s
CI / test-nodejs-website (push) Successful in 21s

The German „X" markers in the description prop combined a curly „
(U+201E) with a straight " (U+0022). The straight quote prematurely
terminated the JavaScript string inside the JSX expression. Removing
both markers around the example text keeps the description readable
and unambiguously valid JSX.

Test selector for the UnavailableWindow description updated to match
the new wording.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-21 23:52:09 +02:00
parent a315db0388
commit 082a5bb68c
10 changed files with 12 additions and 12 deletions
@@ -32,7 +32,7 @@ export function ClassMaxHoursDayEditor() {
<ConstraintShell
testId="class-max-hours-day-editor"
title="Klasse: Max. Stunden / Tag"
description={"Beispiel: 5a hoechstens 6 Stunden pro Tag" (jugendgerecht)."}
description={"Beispiel: 5a hoechstens 6 Stunden pro Tag (jugendgerecht)."}
newLabel="+ Neue Regel"
newDisabled={classes.length === 0}
prereqWarning={classes.length === 0 ? 'Zuerst Klassen anlegen.' : null}
@@ -28,7 +28,7 @@ export function RoomRequiresTypeEditor() {
<ConstraintShell
testId="room-requires-type-editor"
title="Fach: benoetigter Raumtyp"
description={"Beispiel: Sport braucht immer Sporthalle"."}
description={"Beispiel: Sport braucht immer Sporthalle."}
newLabel="+ Neue Regel"
newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -97,7 +97,7 @@ export function RoomUnavailableEditor() {
<ConstraintShell
testId="room-unavailable-editor"
title="Raum: nicht verfuegbar"
description={"Beispiel: Sporthalle Di 5. Stunde Wartung"."}
description={"Beispiel: Sporthalle Di 5. Stunde Wartung."}
newLabel="+ Neue Regel"
newDisabled={rooms.length === 0}
prereqWarning={rooms.length === 0 ? 'Zuerst Raeume anlegen.' : null}
@@ -27,7 +27,7 @@ export function SubjectMaxConsecutiveEditor() {
<ConstraintShell
testId="subject-max-consecutive-editor"
title="Fach: Max. Stunden am Stueck"
description={"Beispiel: Mathe nicht mehr als 2 Stunden am Stueck" (keine Dreifach-Stunde)."}
description={"Beispiel: Mathe nicht mehr als 2 Stunden am Stueck (keine Dreifach-Stunde)."}
newLabel="+ Neue Regel"
newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -29,7 +29,7 @@ export function SubjectPreferredPeriodEditor() {
<ConstraintShell
testId="subject-preferred-period-editor"
title="Fach: Bevorzugter Stunden-Bereich"
description={"Beispiel: Hauptfaecher lieber in den ersten 4 Stunden" (Soft-Regel)."}
description={"Beispiel: Hauptfaecher lieber in den ersten 4 Stunden (Soft-Regel)."}
newLabel="+ Neue Regel"
newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -34,7 +34,7 @@ export function SubjectMinDayGapEditor() {
<ConstraintShell
testId="subject-min-day-gap-editor"
title="Fach: Min. Tagesabstand"
description={"Beispiel: Mathe nicht an 2 Tagen direkt hintereinander"."}
description={"Beispiel: Mathe nicht an 2 Tagen direkt hintereinander."}
newLabel="+ Neue Regel"
newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -39,7 +39,7 @@ export function TeacherExcludedSubjectEditor() {
<ConstraintShell
testId="teacher-excluded-subject-editor"
title="Lehrer: Fach ausgeschlossen"
description={"Beispiel: Anna darf kein Sport unterrichten" (oft Pflicht, z.B. Qualifikation/Behinderung)."}
description={"Beispiel: Anna darf kein Sport unterrichten (oft Pflicht, z.B. Qualifikation/Behinderung)."}
newLabel="+ Neue Regel"
newDisabled={missing}
prereqWarning={missing ? 'Zuerst Lehrer und Faecher anlegen.' : null}
@@ -115,7 +115,7 @@ export function TeacherExcludedRoomEditor() {
<ConstraintShell
testId="teacher-excluded-room-editor"
title="Lehrer: Raum ausgeschlossen"
description={"Beispiel: Anna im Rollstuhl, Raum F kein Fahrstuhl"."}
description={"Beispiel: Anna im Rollstuhl, Raum F kein Fahrstuhl."}
newLabel="+ Neue Regel"
newDisabled={missing}
prereqWarning={missing ? 'Zuerst Lehrer und Raeume anlegen.' : null}
@@ -34,7 +34,7 @@ export function TeacherMaxHoursDayEditor() {
<ConstraintShell
testId="teacher-max-hours-day-editor"
title="Lehrer: Max. Stunden / Tag"
description={"Beispiel: Anna unterrichtet hoechstens 6 Stunden pro Tag" (oft Soft-Regel)."}
description={"Beispiel: Anna unterrichtet hoechstens 6 Stunden pro Tag (oft Soft-Regel)."}
newLabel="+ Neue Regel"
newDisabled={teachers.length === 0}
prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null}
@@ -32,7 +32,7 @@ export function TeacherUnavailableDayEditor() {
<ConstraintShell
testId="teacher-unavailable-day-editor"
title="Lehrer: Tag nicht verfuegbar"
description={"Beispiel: Lehrer X kann Montags nie"."}
description={"Beispiel: Lehrer X kann Montags nie."}
newLabel="+ Neue Regel"
newDisabled={teachers.length === 0}
prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen, dann koennen Regeln vergeben werden.' : null}
@@ -28,7 +28,7 @@ export function TeacherUnavailableWindowEditor() {
<ConstraintShell
testId="teacher-unavailable-window-editor"
title="Lehrer: Zeitfenster nicht verfuegbar"
description={"Beispiel: Lehrer Z Dienstags 13:0017:00 nicht"."}
description={"Beispiel: Lehrer Z Dienstags 13:0017:00 nicht."}
newLabel="+ Neue Regel"
newDisabled={teachers.length === 0}
prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null}
+1 -1
View File
@@ -312,7 +312,7 @@ test.describe('Stundenplan — Regeln Hub', () => {
test('switching to UnavailableWindow editor swaps the right pane', async ({ page }) => {
await page.getByRole('button', { name: 'Zeitfenster nicht verfuegbar' }).click()
await expect(page.getByTestId('teacher-unavailable-window-editor')).toBeVisible()
await expect(page.getByText('Lehrer Z Dienstags 13:0017:00 nicht".')).toBeVisible()
await expect(page.getByText('Lehrer Z Dienstags 13:0017:00 nicht.')).toBeVisible()
})
test('switching to SubjectMaxConsecutive editor works', async ({ page }) => {