diff --git a/frontend/src/routes/admin/groups/new/page.svelte.test.ts b/frontend/src/routes/admin/groups/new/page.svelte.test.ts index e9834bd0..9eaeaa64 100644 --- a/frontend/src/routes/admin/groups/new/page.svelte.test.ts +++ b/frontend/src/routes/admin/groups/new/page.svelte.test.ts @@ -82,4 +82,25 @@ describe('admin/groups/new page', () => { expect(nameInput.placeholder).not.toBe(''); expect(nameInput.required).toBe(true); }); + + it('does not show the unsaved-warning banner before any input', async () => { + render(AdminGroupNewPage, { props: { form: undefined } }); + + // The unsaved warning specifically contains the German phrase + expect(document.body.textContent).not.toMatch(/ungespeicherte/i); + }); + + it('marks the form dirty after an input event without throwing', async () => { + render(AdminGroupNewPage, { props: { form: undefined } }); + + const form = document.querySelector('form') as HTMLFormElement; + expect(() => form.dispatchEvent(new Event('input', { bubbles: true }))).not.toThrow(); + }); + + it('hides the form error banner when form is undefined (already covered, branch 2)', async () => { + render(AdminGroupNewPage, { props: { form: undefined } }); + + const banner = document.querySelector('.bg-red-50'); + expect(banner).toBeNull(); + }); });