Skip to content

Commit 25d3846

Browse files
committed
e2e/acceptance/reverse-dependencies: Migrate from mirage to @crates-io/msw
1 parent 4a984f1 commit 25d3846

File tree

1 file changed

+39
-61
lines changed

1 file changed

+39
-61
lines changed

e2e/acceptance/reverse-dependencies.spec.ts

Lines changed: 39 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,51 @@
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 | /crates/:crate_id/reverse_dependencies', { tag: '@acceptance' }, () => {
4-
test.beforeEach(async ({ page, mirage }) => {
5-
await page.addInitScript(() => {
6-
globalThis.foo = { name: 'foo' };
7-
globalThis.bar = { name: 'bar' };
8-
globalThis.baz = { name: 'baz' };
9-
});
10-
await mirage.addHook(server => {
11-
console.log('[>>>] mirage');
12-
let foo = server.create('crate', globalThis.foo);
13-
server.create('version', { crate: foo });
14-
15-
let bar = server.create('crate', globalThis.bar);
16-
server.create('version', { crate: bar });
17-
18-
let baz = server.create('crate', globalThis.baz);
19-
server.create('version', { crate: baz });
20-
21-
server.create('dependency', { crate: foo, version: bar.versions.models[0] });
22-
server.create('dependency', { crate: foo, version: baz.versions.models[0] });
23-
24-
globalThis.foo = foo;
25-
globalThis.bar = bar;
26-
globalThis.baz = baz;
27-
});
28-
29-
// this allows us to evaluate the name before goingo to the actual page
30-
await page.goto('about:blank');
31-
});
5+
function prepare(msw) {
6+
let foo = msw.db.crate.create({ name: 'foo' });
7+
msw.db.version.create({ crate: foo });
8+
9+
let bar = msw.db.crate.create({ name: 'bar' });
10+
let barV = msw.db.version.create({ crate: bar });
11+
12+
let baz = msw.db.crate.create({ name: 'baz' });
13+
let bazV = msw.db.version.create({ crate: baz });
14+
15+
msw.db.dependency.create({ crate: foo, version: barV });
16+
msw.db.dependency.create({ crate: foo, version: bazV });
17+
18+
return { foo, bar, baz };
19+
}
3220

33-
test('shows a list of crates depending on the selected crate', async ({ page }) => {
34-
const foo = await page.evaluate(() => globalThis.foo);
21+
test('shows a list of crates depending on the selected crate', async ({ page, msw }) => {
22+
let { foo, bar, baz } = prepare(msw);
3523

3624
await page.goto(`/crates/${foo.name}/reverse_dependencies`);
3725
await expect(page).toHaveURL(`/crates/${foo.name}/reverse_dependencies`);
3826

39-
const { bar, baz } = await page.evaluate(() => {
40-
const val = item => ({ name: item.name, description: item.description });
41-
return { bar: val(bar), baz: val(baz) };
42-
});
43-
4427
await expect(page.locator('[data-test-row]')).toHaveCount(2);
45-
const row0 = page.locator('[data-test-row="0"]');
46-
await expect(row0.locator('[data-test-crate-name]')).toHaveText(bar.name);
47-
await expect(row0.locator('[data-test-description]')).toHaveText(bar.description);
48-
const row1 = page.locator('[data-test-row="1"]');
28+
const row1 = page.locator('[data-test-row="0"]');
4929
await expect(row1.locator('[data-test-crate-name]')).toHaveText(baz.name);
5030
await expect(row1.locator('[data-test-description]')).toHaveText(baz.description);
31+
const row0 = page.locator('[data-test-row="1"]');
32+
await expect(row0.locator('[data-test-crate-name]')).toHaveText(bar.name);
33+
await expect(row0.locator('[data-test-description]')).toHaveText(bar.description);
5134
});
5235

53-
test('supports pagination', async ({ page, mirage }) => {
54-
await mirage.addHook(server => {
55-
let foo = globalThis.foo;
36+
test('supports pagination', async ({ page, msw }) => {
37+
let { foo } = prepare(msw);
5638

57-
for (let i = 0; i < 20; i++) {
58-
let crate = server.create('crate');
59-
let version = server.create('version', { crate });
60-
server.create('dependency', { crate: foo, version });
61-
}
62-
});
39+
for (let i = 0; i < 20; i++) {
40+
let crate = msw.db.crate.create();
41+
let version = msw.db.version.create({ crate });
42+
msw.db.dependency.create({ crate: foo, version });
43+
}
6344

6445
const row = page.locator('[data-test-row]');
6546
const currentRows = page.locator('[data-test-current-rows]');
6647
const totalRows = page.locator('[data-test-total-rows]');
6748

68-
const foo = await page.evaluate(() => globalThis.foo);
6949
await page.goto(`/crates/${foo.name}/reverse_dependencies`);
7050
await expect(page).toHaveURL(`/crates/${foo.name}/reverse_dependencies`);
7151
await expect(row).toHaveCount(10);
@@ -85,12 +65,11 @@ test.describe('Acceptance | /crates/:crate_id/reverse_dependencies', { tag: '@ac
8565
await expect(totalRows).toHaveText('22');
8666
});
8767

88-
test('shows a generic error if the server is broken', async ({ page, mirage }) => {
89-
await mirage.addHook(server => {
90-
server.get('/api/v1/crates/:crate_id/reverse_dependencies', {}, 500);
91-
});
68+
test('shows a generic error if the server is broken', async ({ page, msw }) => {
69+
let { foo } = prepare(msw);
9270

93-
const foo = await page.evaluate(() => globalThis.foo);
71+
let error = HttpResponse.json({}, { status: 500 });
72+
await msw.worker.use(http.get('/api/v1/crates/:crate_id/reverse_dependencies', () => error));
9473

9574
await page.goto(`/crates/${foo.name}/reverse_dependencies`);
9675
await expect(page).toHaveURL('/');
@@ -99,13 +78,12 @@ test.describe('Acceptance | /crates/:crate_id/reverse_dependencies', { tag: '@ac
9978
);
10079
});
10180

102-
test('shows a detailed error if available', async ({ page, mirage }) => {
103-
await mirage.addHook(server => {
104-
let payload = { errors: [{ detail: 'cannot request more than 100 items' }] };
105-
server.get('/api/v1/crates/:crate_id/reverse_dependencies', payload, 400);
106-
});
81+
test('shows a detailed error if available', async ({ page, msw }) => {
82+
let { foo } = prepare(msw);
10783

108-
const foo = await page.evaluate(() => globalThis.foo);
84+
let payload = { errors: [{ detail: 'cannot request more than 100 items' }] };
85+
let error = HttpResponse.json(payload, { status: 400 });
86+
await msw.worker.use(http.get('/api/v1/crates/:crate_id/reverse_dependencies', () => error));
10987

11088
await page.goto(`/crates/${foo.name}/reverse_dependencies`);
11189
await expect(page).toHaveURL('/');

0 commit comments

Comments
 (0)