diff --git a/public/buchungen-tab-anfragen.js b/public/buchungen-tab-anfragen.js index 8d9ad5d..ba82960 100644 --- a/public/buchungen-tab-anfragen.js +++ b/public/buchungen-tab-anfragen.js @@ -165,7 +165,8 @@ export async function render(panel, ctx) { zeigeLink(antwort?.buchungsLink, a) } catch (err) { knopf.disabled = false - if (err.status === 409) zeigeFehler(form, { message: BELEGT, fehler: { _: BELEGT } }) + // 409 heisst nicht immer belegt (auch zustimmung_fehlt, status_ungueltig): nur der Code zeitraum_belegt bekommt den Belegt-Text + if (err.status === 409 && err.fehler === 'zeitraum_belegt') zeigeFehler(form, { message: BELEGT, fehler: { _: BELEGT } }) else zeigeFehler(form, fehlerFuerFormular(err)) } } diff --git a/test/buchungenUi.test.js b/test/buchungenUi.test.js index 2d11ccb..e1c417c 100644 --- a/test/buchungenUi.test.js +++ b/test/buchungenUi.test.js @@ -120,6 +120,29 @@ test('Freigeben: 409 zeigt „Der Zeitraum ist inzwischen belegt.“', mit(serve assert.equal(aktion(fx, panel, 'freigeben').disabled, false) })) +test('Freigeben: 409 ohne Rechnungsauftrag zeigt die Zustimmungs-Meldung, nicht „belegt“', mit(server({ + 'POST /api/unterkunft/anfragen/a1/freigeben': () => ({ status: 409, body: { fehler: 'zustimmung_fehlt' } }), +}), async (fx) => { + const { panel } = await zeige(fx) + await oeffne(fx, panel) + await fx.klick(aktion(fx, panel, 'freigeben')) + await fx.ruhe() + assert.match(fx.text(panel), /Bitte erteile zuerst in den Einstellungen die Zustimmung zur Rechnungsstellung in deinem Namen\./) + assert.doesNotMatch(fx.text(panel), /belegt/) + assert.equal(aktion(fx, panel, 'freigeben').disabled, false) +})) + +test('Freigeben: 409 status_ungueltig zeigt den Stand-Hinweis, nicht „belegt“', mit(server({ + 'POST /api/unterkunft/anfragen/a1/freigeben': () => ({ status: 409, body: { fehler: 'status_ungueltig' } }), +}), async (fx) => { + const { panel } = await zeige(fx) + await oeffne(fx, panel) + await fx.klick(aktion(fx, panel, 'freigeben')) + await fx.ruhe() + assert.match(fx.text(panel), /Lade die Seite neu und prüfe den Status\./) + assert.doesNotMatch(fx.text(panel), /belegt/) +})) + test('Ablehnen sendet den Text', mit(server({ 'POST /api/unterkunft/anfragen/a1/ablehnen': () => ({ body: {} }) }), async (fx) => { const { panel } = await zeige(fx) await oeffne(fx, panel)