diff --git a/frontend/src/routes/admin/users/new/page.svelte.test.ts b/frontend/src/routes/admin/users/new/page.svelte.test.ts index e403aefb..264dd628 100644 --- a/frontend/src/routes/admin/users/new/page.svelte.test.ts +++ b/frontend/src/routes/admin/users/new/page.svelte.test.ts @@ -71,4 +71,26 @@ describe('admin/users/new page', () => { await expect.element(page.getByRole('button', { name: /erstellen/i })).toBeVisible(); }); + + it('does not show the unsaved-warning banner before any input', async () => { + render(AdminUserNewPage, { props: { data: baseData(), form: undefined } }); + + const banner = document.querySelector('.bg-amber-50'); + expect(banner).toBeNull(); + }); + + it('marks the form dirty after an input event (sets isDirty internally)', async () => { + render(AdminUserNewPage, { props: { data: baseData(), form: undefined } }); + + const form = document.querySelector('form#new-user-form') as HTMLFormElement; + // Dispatch input event on the form to trigger oninput handler + expect(() => form.dispatchEvent(new Event('input', { bubbles: true }))).not.toThrow(); + }); + + it('hides the form-error banner when form.error is undefined', async () => { + render(AdminUserNewPage, { props: { data: baseData(), form: undefined } }); + + const banner = document.querySelector('.bg-red-50'); + expect(banner).toBeNull(); + }); });