test(admin): expand admin/users/[id] page coverage

Adds banner-hidden defaults (success/error), empty groups list,
groups field undefined fallback to [].

4 new tests covering ~6 branches.

Refs #496.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-10 06:03:22 +02:00
committed by marcel
parent 4c0eee8da3
commit 3205fab33b

View File

@@ -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 <div>.
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);
});
});