Files
portal/src/routes/(protected)/admin/users/page.svelte.spec.ts
T

65 lines
1.7 KiB
TypeScript

import { page } from 'vitest/browser';
import { describe, it, expect, vi } from 'vitest';
import { render } from 'vitest-browser-svelte';
import type { PageProps } from './$types';
vi.mock('$app/forms', () => ({
enhance: () => () => {}
}));
import Page from './+page.svelte';
const superAdmin = {
id: 'admin-1',
name: 'Super Admin',
roleId: 1,
roleName: 'SUPER'
};
function makeData(overrides: Partial<PageProps['data']> = {}): PageProps['data'] {
return {
records: [],
roleOptions: [{ id: 4, name: 'USER' }],
adminUser: superAdmin,
userRoleId: 1,
...overrides
};
}
async function clickButton(name: string) {
const loc = page.getByRole('button', { name });
const el = (await loc.element()) as HTMLElement;
el.click();
}
describe('users admin page', () => {
it('does not replay a stale success result when reopening the create modal', async () => {
render(Page, {
params: {},
data: makeData(),
form: { success: true, action: 'upsert' }
});
await clickButton('New User');
await expect.element(page.getByRole('button', { name: 'Create User' })).toBeInTheDocument();
expect(page.getByText('User created').elements()).toHaveLength(0);
});
it('does not replay a stale success result when opening the edit modal', async () => {
const record = { id: 'user-1', name: 'Jane Doe', email: 'jane@example.com', roleId: 4 };
render(Page, {
params: {},
data: makeData({ records: [record] }),
form: { success: true, action: 'upsert' }
});
const cell = (await page.getByRole('cell', { name: 'Jane Doe' }).element()) as HTMLElement;
cell.click();
await expect.element(page.getByRole('button', { name: 'Save User' })).toBeInTheDocument();
expect(page.getByText('User updated').elements()).toHaveLength(0);
});
});