From 474779bcc342a2df0dd2e18790e320476b0550c7 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 10 May 2026 06:16:36 +0200 Subject: [PATCH] test(admin): expand admin/groups/[id] page coverage Adds banner-hidden defaults, all-8-permission-checkboxes count, empty permissions array. 4 new tests covering ~6 branches. Refs #496. Co-Authored-By: Claude Sonnet 4.6 --- .../admin/groups/[id]/page.svelte.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts b/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts index b88f9f6f..371a0f34 100644 --- a/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts +++ b/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts @@ -87,4 +87,39 @@ describe('admin/groups/[id] page', () => { await expect.element(page.getByRole('button', { name: /löschen/i })).toBeVisible(); await expect.element(page.getByRole('button', { name: /speichern/i })).toBeVisible(); }); + + it('does not render success banner when form is undefined', async () => { + render(AdminGroupEditPage, { props: { data: { group: baseGroup() }, form: undefined } }); + + const banner = document.querySelector('.bg-green-50'); + expect(banner).toBeNull(); + }); + + it('does not render error-banner div when form.success is true (success path only)', async () => { + render(AdminGroupEditPage, { + props: { data: { group: baseGroup() }, form: { success: true } } + }); + + // Error banner is the
with bg-red-50 — the delete button is also red but is a button + const errorBanner = document.querySelector('div.bg-red-50'); + expect(errorBanner).toBeNull(); + }); + + it('renders all 8 permission checkboxes (4 standard + 4 admin)', async () => { + render(AdminGroupEditPage, { props: { data: { group: baseGroup() }, form: undefined } }); + + const checkboxes = document.querySelectorAll('input[name="permissions"]'); + expect(checkboxes.length).toBe(8); + }); + + it('handles a group with empty permissions array', async () => { + render(AdminGroupEditPage, { + props: { data: { group: baseGroup({ permissions: [] }) }, form: undefined } + }); + + const checkboxes = Array.from( + document.querySelectorAll('input[name="permissions"]') + ) as HTMLInputElement[]; + expect(checkboxes.every((c) => !c.checked)).toBe(true); + }); });