Skip to content

Commit b0add9a

Browse files
committed
e2e/acceptance/sudo: Migrate from mirage to @crates-io/msw
1 parent dc2066f commit b0add9a

File tree

1 file changed

+34
-41
lines changed

1 file changed

+34
-41
lines changed

e2e/acceptance/sudo.spec.ts

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,32 @@ import { test, expect } from '@/e2e/helper';
22
import { format } from 'date-fns/format';
33

44
test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
5-
test.beforeEach(async ({ mirage }) => {
6-
await mirage.addHook(server => {
7-
const isAdmin = globalThis.isAdmin;
8-
const user = server.create('user', {
9-
login: 'johnnydee',
10-
name: 'John Doe',
11-
12-
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',
13-
isAdmin,
14-
});
15-
16-
const crate = server.create('crate', {
17-
name: 'foo',
18-
newest_version: '0.1.0',
19-
});
20-
21-
const version = server.create('version', {
22-
crate,
23-
num: '0.1.0',
24-
});
25-
26-
authenticateAs(user);
5+
function prepare(msw, { isAdmin = false } = {}) {
6+
let user = msw.db.user.create({
7+
login: 'johnnydee',
8+
name: 'John Doe',
9+
10+
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',
11+
isAdmin,
12+
});
13+
14+
let crate = msw.db.crate.create({
15+
name: 'foo',
16+
newest_version: '0.1.0',
17+
});
18+
19+
let version = msw.db.version.create({
20+
crate,
21+
num: '0.1.0',
2722
});
28-
});
2923

30-
test('non-admin users do not see any controls', async ({ page }) => {
31-
await page.addInitScript(() => (globalThis.isAdmin = false));
24+
msw.authenticateAs(user);
25+
26+
return { user, crate, version };
27+
}
28+
29+
test('non-admin users do not see any controls', async ({ page, msw }) => {
30+
prepare(msw);
3231

3332
await page.goto('/crates/foo/versions');
3433

@@ -41,8 +40,8 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
4140
await expect(page.locator('[data-test-version-yank-button="0.1.0"]')).toHaveCount(0);
4241
});
4342

44-
test('admin user is not initially in sudo mode', async ({ page }) => {
45-
await page.addInitScript(() => (globalThis.isAdmin = true));
43+
test('admin user is not initially in sudo mode', async ({ page, msw }) => {
44+
prepare(msw, { isAdmin: true });
4645

4746
await page.goto('/crates/foo/versions');
4847

@@ -64,8 +63,8 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
6463
await expect(page.locator('[data-test-version-yank-button="0.1.0"]')).toBeVisible();
6564
});
6665

67-
test('admin user can enter sudo mode', async ({ page }) => {
68-
await page.addInitScript(() => (globalThis.isAdmin = true));
66+
test('admin user can enter sudo mode', async ({ page, msw }) => {
67+
prepare(msw, { isAdmin: true });
6968
await page.exposeFunction('format', ((date, options) => format(date, options)) as typeof format);
7069

7170
await page.goto('/crates/foo/versions');
@@ -99,8 +98,8 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
9998
await expect(page.locator('[data-test-version-yank-button="0.1.0"]')).toBeVisible();
10099
});
101100

102-
test('admin can yank a crate in sudo mode', async ({ page }) => {
103-
await page.addInitScript(() => (globalThis.isAdmin = true));
101+
test('admin can yank a crate in sudo mode', async ({ page, msw }) => {
102+
let { version } = prepare(msw, { isAdmin: true });
104103

105104
await page.goto('/crates/foo/versions');
106105

@@ -113,21 +112,15 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
113112
await yankButton.click();
114113

115114
// Verify backend state after yanking
116-
const yankedVersion = await page.evaluate(() => {
117-
const crate = server.schema['crates'].findBy({ name: 'foo' });
118-
return server.schema['versions'].findBy({ crateId: crate.id, num: '0.1.0', yanked: true });
119-
});
120-
expect(yankedVersion, 'The version should be yanked').toBeTruthy();
115+
version = msw.db.version.findFirst({ where: { id: { equals: version.id } } });
116+
expect(version.yanked, 'The version should be yanked').toBe(true);
121117

122118
await expect(unyankButton).toBeVisible();
123119
await unyankButton.click();
124120

125121
// Verify backend state after unyanking
126-
const unyankedVersion = await page.evaluate(() => {
127-
const crate = server.schema['crates'].findBy({ name: 'foo' });
128-
return server.schema['versions'].findBy({ crateId: crate.id, num: '0.1.0', yanked: false });
129-
});
130-
expect(unyankedVersion, 'The version should be unyanked').toBeTruthy();
122+
version = msw.db.version.findFirst({ where: { id: { equals: version.id } } });
123+
expect(version.yanked, 'The version should be unyanked').toBe(false);
131124

132125
await expect(yankButton).toBeVisible();
133126
});

0 commit comments

Comments
 (0)