From a09e25186f77445482ed3deedfaa07de673ab525 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 10 May 2026 05:19:34 +0200 Subject: [PATCH] test(admin): expand admin/users/new page coverage Adds unsaved-warning hidden by default, oninput dirty marker, form-error banner hidden when form.error undefined. 3 new tests targeting ~6 branches. Refs #496. Co-Authored-By: Claude Sonnet 4.6 --- .../admin/users/new/page.svelte.test.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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(); + }); });