Skip to content

Commit d201365

Browse files
committed
e2e/acceptance/settings/remove-owner: Migrate from mirage to @crates-io/msw
1 parent 6e0fa94 commit d201365

File tree

1 file changed

+28
-46
lines changed

1 file changed

+28
-46
lines changed

e2e/acceptance/settings/remove-owner.spec.ts

Lines changed: 28 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,23 @@
1-
import { test, expect } from '@/e2e/helper';
1+
import { expect, test } from '@/e2e/helper';
2+
import { http, HttpResponse } from 'msw';
23

34
test.describe('Acceptance | Settings | Remove Owner', { tag: '@acceptance' }, () => {
4-
test.beforeEach(async ({ page, mirage }) => {
5-
await page.addInitScript(() => {
6-
globalThis.crate = { name: 'nanomsg' };
7-
});
8-
await mirage.addHook(server => {
9-
let user1 = server.create('user', { name: 'blabaere' });
10-
let user2 = server.create('user', { name: 'thehydroimpulse' });
11-
let team1 = server.create('team', { org: 'org', name: 'blabaere' });
12-
let team2 = server.create('team', { org: 'org', name: 'thehydroimpulse' });
13-
14-
let crate = server.create('crate', { name: 'nanomsg' });
15-
server.create('version', { crate, num: '1.0.0' });
16-
server.create('crate-ownership', { crate, user: user1 });
17-
server.create('crate-ownership', { crate, user: user2 });
18-
server.create('crate-ownership', { crate, team: team1 });
19-
server.create('crate-ownership', { crate, team: team2 });
20-
21-
authenticateAs(user1);
22-
23-
globalThis.crate = crate;
24-
globalThis.user2 = user2;
25-
globalThis.team1 = team1;
26-
});
5+
let user1, user2, team1, team2, crate;
6+
7+
test.beforeEach(async ({ msw }) => {
8+
user1 = msw.db.user.create({ name: 'blabaere' });
9+
user2 = msw.db.user.create({ name: 'thehydroimpulse' });
10+
team1 = msw.db.team.create({ org: 'org', name: 'blabaere' });
11+
team2 = msw.db.team.create({ org: 'org', name: 'thehydroimpulse' });
12+
13+
crate = msw.db.crate.create({ name: 'nanomsg' });
14+
msw.db.version.create({ crate, num: '1.0.0' });
15+
msw.db.crateOwnership.create({ crate, user: user1 });
16+
msw.db.crateOwnership.create({ crate, user: user2 });
17+
msw.db.crateOwnership.create({ crate, team: team1 });
18+
msw.db.crateOwnership.create({ crate, team: team2 });
19+
20+
await msw.authenticateAs(user1);
2721
});
2822

2923
test('remove a crate owner when owner is a user', async ({ page }) => {
@@ -36,19 +30,13 @@ test.describe('Acceptance | Settings | Remove Owner', { tag: '@acceptance' }, ()
3630
await expect(page.locator('[data-test-owner-user]')).toHaveCount(1);
3731
});
3832

39-
test('remove a user crate owner (error behavior)', async ({ page, mirage }) => {
40-
await mirage.addHook(server => {
41-
// we are intentionally returning a 200 response here, because is what
42-
// the real backend also returns due to legacy reasons
43-
server.delete('/api/v1/crates/nanomsg/owners', { errors: [{ detail: 'nope' }] });
44-
});
45-
46-
await page.goto('about:blank');
47-
let crate = await page.evaluate<{ name: string }>('crate');
33+
test('remove a user crate owner (error behavior)', async ({ page, msw }) => {
34+
// we are intentionally returning a 200 response here, because is what
35+
// the real backend also returns due to legacy reasons
36+
let error = HttpResponse.json({ errors: [{ detail: 'nope' }] });
37+
await msw.worker.use(http.delete('/api/v1/crates/nanomsg/owners', () => error));
4838

4939
await page.goto(`/crates/${crate.name}/settings`);
50-
51-
const user2 = await page.evaluate(() => JSON.parse(JSON.stringify(user2)));
5240
await page.click(`[data-test-owner-user="${user2.login}"] [data-test-remove-owner-button]`);
5341

5442
await expect(page.locator('[data-test-notification-message="error"]')).toHaveText(
@@ -67,19 +55,13 @@ test.describe('Acceptance | Settings | Remove Owner', { tag: '@acceptance' }, ()
6755
await expect(page.locator('[data-test-owner-team]')).toHaveCount(1);
6856
});
6957

70-
test('remove a team crate owner (error behavior)', async ({ page, mirage }) => {
71-
await mirage.addHook(server => {
72-
// we are intentionally returning a 200 response here, because is what
73-
// the real backend also returns due to legacy reasons
74-
server.delete('/api/v1/crates/nanomsg/owners', { errors: [{ detail: 'nope' }] });
75-
});
76-
77-
await page.goto('about:blank');
78-
let crate = await page.evaluate<{ name: string }>('crate');
58+
test('remove a team crate owner (error behavior)', async ({ page, msw }) => {
59+
// we are intentionally returning a 200 response here, because is what
60+
// the real backend also returns due to legacy reasons
61+
let error = HttpResponse.json({ errors: [{ detail: 'nope' }] });
62+
await msw.worker.use(http.delete('/api/v1/crates/nanomsg/owners', () => error));
7963

8064
await page.goto(`/crates/${crate.name}/settings`);
81-
82-
let team1 = await page.evaluate(() => JSON.parse(JSON.stringify(team1)));
8365
await page.click(`[data-test-owner-team="${team1.login}"] [data-test-remove-owner-button]`);
8466

8567
await expect(page.locator('[data-test-notification-message="error"]')).toHaveText(

0 commit comments

Comments
 (0)