Skip to content

Commit

Permalink
tests: add user group tests
Browse files Browse the repository at this point in the history
  • Loading branch information
stonith404 committed Oct 2, 2024
1 parent 24c948e commit d02d893
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 1 deletion.
24 changes: 24 additions & 0 deletions backend/internal/service/test_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,30 @@ func (s *TestService) SeedDatabase() error {
}
}

userGroups := []model.UserGroup{
{
Base: model.Base{
ID: "4110f814-56f1-4b28-8998-752b69bc97c0e",
},
Name: "developers",
FriendlyName: "Developers",
Users: []model.User{users[0], users[1]},
},
{
Base: model.Base{
ID: "adab18bf-f89d-4087-9ee1-70ff15b48211",
},
Name: "designers",
FriendlyName: "Designers",
Users: []model.User{users[0]},
},
}
for _, group := range userGroups {
if err := tx.Create(&group).Error; err != nil {
return err
}
}

oidcClients := []model.OidcClient{
{
Base: model.Base{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
let success = true;
await userGroupService
.update(userGroup.id, updatedUserGroup)
.then(() => toast.success('User Group updated successfully'))
.then(() => toast.success('User group updated successfully'))
.catch((e) => {
axiosErrorToast(e);
success = false;
Expand Down
17 changes: 17 additions & 0 deletions frontend/tests/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,20 @@ export const oidcClients = {
secondCallbackUrl: 'http://pingvin.share/auth/callback2'
}
};

export const userGroups = {
developers: {
id: '4110f814-56f1-4b28-8998-752b69bc97c0e',
friendlyName: 'Developers',
name: 'developers'
},
designers: {
id: 'adab18bf-f89d-4087-9ee1-70ff15b48211',
friendlyName: 'Designers',
name: 'designers'
},
humanResources: {
friendlyName: 'Human Resources',
name: 'human_resources'
}
};
74 changes: 74 additions & 0 deletions frontend/tests/user-group.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import test, { expect } from '@playwright/test';
import { userGroups, users } from './data';
import { cleanupBackend } from './utils/cleanup.util';

test.beforeEach(cleanupBackend);

test('Create user group', async ({ page }) => {
await page.goto('/settings/admin/user-groups');
const group = userGroups.humanResources;

await page.getByRole('button', { name: 'Add Group' }).click();
await page.getByLabel('Friendly Name').fill(group.friendlyName);

await page.getByRole('button', { name: 'Save' }).click();

await expect(page.getByRole('status')).toHaveText('User group created successfully');
expect(page.url()).toMatch(/\/settings\/admin\/user-groups\/[a-f0-9-]+/);

await expect(page.getByLabel('Friendly Name')).toHaveValue(group.friendlyName);
await expect(page.getByLabel('Name', { exact: true })).toHaveValue(group.name);
});

test('Edit user group', async ({ page }) => {
await page.goto('/settings/admin/user-groups');
const group = userGroups.developers;

await page.getByRole('row', { name: group.name }).getByRole('button').click();
await page.getByRole('menuitem', { name: 'Edit' }).click();

await page.getByLabel('Friendly Name').fill('Developers updated');

await expect(page.getByLabel('Name', { exact: true })).toHaveValue(group.name);

await page.getByLabel('Name', { exact: true }).fill('developers_updated');

await page.getByRole('button', { name: 'Save' }).nth(0).click();

await expect(page.getByRole('status')).toHaveText('User group updated successfully');
await expect(page.getByLabel('Friendly Name')).toHaveValue('Developers updated');
await expect(page.getByLabel('Name', { exact: true })).toHaveValue('developers_updated');
});

test('Update user group users', async ({ page }) => {
const group = userGroups.designers;
await page.goto(`/settings/admin/user-groups/${group.id}`);

await page.getByRole('row', { name: users.tim.email }).getByRole('checkbox').click();
await page.getByRole('row', { name: users.craig.email }).getByRole('checkbox').click();

await page.getByRole('button', { name: 'Save' }).nth(1).click();

await expect(page.getByRole('status')).toHaveText('Users updated successfully');

await page.reload();

await expect(
page.getByRole('row', { name: users.tim.email }).getByRole('checkbox')
).toHaveAttribute('data-state', 'unchecked');
await expect(
page.getByRole('row', { name: users.craig.email }).getByRole('checkbox')
).toHaveAttribute('data-state', 'checked');
});

test('Delete user group', async ({ page }) => {
const group = userGroups.developers;
await page.goto('/settings/admin/user-groups');

await page.getByRole('row', { name: group.name }).getByRole('button').click();
await page.getByRole('menuitem', { name: 'Delete' }).click();
await page.getByRole('button', { name: 'Delete' }).click();

await expect(page.getByRole('status')).toHaveText('User group deleted successfully');
await expect(page.getByRole('row', { name: group.name })).not.toBeVisible();
});

0 comments on commit d02d893

Please sign in to comment.