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:
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user