Skip to content

Commit 010cce1

Browse files
authored
e2e: Add missing Route | crate.settings tests (#11397)
1 parent 2b5e893 commit 010cce1

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

e2e/routes/crate/settings.spec.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { expect, test } from '@/e2e/helper';
2+
3+
test.describe('Route | crate.settings', { tag: '@routes' }, () => {
4+
async function prepare(msw) {
5+
let user = msw.db.user.create();
6+
7+
let crate = msw.db.crate.create({ name: 'foo' });
8+
msw.db.version.create({ crate });
9+
msw.db.crateOwnership.create({ crate, user });
10+
11+
await msw.authenticateAs(user);
12+
13+
return { crate, user };
14+
}
15+
16+
test('unauthenticated', async ({ msw, page }) => {
17+
let crate = msw.db.crate.create({ name: 'foo' });
18+
msw.db.version.create({ crate });
19+
20+
await page.goto('/crates/foo/settings');
21+
await expect(page).toHaveURL('/crates/foo/settings');
22+
await expect(page.locator('[data-test-title]')).toHaveText('This page requires authentication');
23+
await expect(page.locator('[data-test-login]')).toBeVisible();
24+
});
25+
26+
test('not an owner', async ({ msw, page }) => {
27+
let user1 = msw.db.user.create();
28+
await msw.authenticateAs(user1);
29+
30+
let user2 = msw.db.user.create();
31+
let crate = msw.db.crate.create({ name: 'foo' });
32+
msw.db.version.create({ crate });
33+
msw.db.crateOwnership.create({ crate, user: user2 });
34+
35+
await page.goto('/crates/foo/settings');
36+
await expect(page).toHaveURL('/crates/foo/settings');
37+
await expect(page.locator('[data-test-title]')).toHaveText('This page is only accessible by crate owners');
38+
await expect(page.locator('[data-test-go-back]')).toBeVisible();
39+
});
40+
41+
test('happy path', async ({ msw, page }) => {
42+
let { user } = await prepare(msw);
43+
44+
await page.goto('/crates/foo/settings');
45+
await expect(page).toHaveURL('/crates/foo/settings');
46+
await expect(page.locator('[data-test-owners]')).toBeVisible();
47+
await expect(page.locator('[data-test-add-owner-button]')).toBeVisible();
48+
await expect(page.locator(`[data-test-owner-user="${user.login}"]`)).toBeVisible();
49+
await expect(page.locator('[data-test-remove-owner-button]')).toBeVisible();
50+
await expect(page.locator('[data-test-delete-button]')).toBeVisible();
51+
});
52+
});

0 commit comments

Comments
 (0)