diff --git a/frontend/src/routes/admin/users/[id]/page.svelte.test.ts b/frontend/src/routes/admin/users/[id]/page.svelte.test.ts
index c02005c3..861cd86d 100644
--- a/frontend/src/routes/admin/users/[id]/page.svelte.test.ts
+++ b/frontend/src/routes/admin/users/[id]/page.svelte.test.ts
@@ -84,4 +84,49 @@ describe('admin/users/[id] page', () => {
await expect.element(page.getByRole('button', { name: /löschen/i })).toBeVisible();
});
+
+ it('does not show success banner when form is undefined', async () => {
+ render(AdminUserEditPage, { props: { data: baseData(), form: undefined } });
+
+ const banner = document.querySelector('.bg-green-50');
+ expect(banner).toBeNull();
+ });
+
+ it('does not show error banner when form.error is undefined', async () => {
+ render(AdminUserEditPage, { props: { data: baseData(), form: { success: false } } });
+
+ // The error banner has both border-red-200 AND text-red-700 — the delete button has red-50
+ // background but is a button, not a div. Look for the specific error
.
+ const banner = document.querySelector('div.bg-red-50');
+ expect(banner).toBeNull();
+ });
+
+ it('handles a user with empty groups list (selectedGroupIds defaults to [])', async () => {
+ render(AdminUserEditPage, {
+ props: {
+ data: baseData({ editUser: { ...baseEditUser, groups: [] } }),
+ form: undefined
+ }
+ });
+
+ const checkboxes = Array.from(
+ document.querySelectorAll('input[name="groupIds"]')
+ ) as HTMLInputElement[];
+ const checked = checkboxes.filter((c) => c.checked);
+ expect(checked.length).toBe(0);
+ });
+
+ it('handles a user with no groups field at all (defaults to [])', async () => {
+ const editUser = { ...baseEditUser } as typeof baseEditUser & { groups?: undefined };
+ delete (editUser as { groups?: unknown }).groups;
+ render(AdminUserEditPage, {
+ props: { data: baseData({ editUser }), form: undefined }
+ });
+
+ const checkboxes = Array.from(
+ document.querySelectorAll('input[name="groupIds"]')
+ ) as HTMLInputElement[];
+ const checked = checkboxes.filter((c) => c.checked);
+ expect(checked.length).toBe(0);
+ });
});