Skip to content

Commit e0c3c72

Browse files
committed
e2e/routes/crate/version/docs-link: Migrate from mirage to @crates-io/msw
1 parent 4865459 commit e0c3c72

File tree

1 file changed

+41
-48
lines changed

1 file changed

+41
-48
lines changed

e2e/routes/crate/version/docs-link.spec.ts

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

34
test.describe('Route | crate.version | docs link', { tag: '@routes' }, () => {
4-
test('shows regular documentation link', async ({ page, mirage }) => {
5-
await mirage.addHook(server => {
6-
let crate = server.create('crate', { name: 'foo', documentation: 'https://foo.io/docs' });
7-
server.create('version', { crate, num: '1.0.0' });
8-
});
5+
test('shows regular documentation link', async ({ page, msw }) => {
6+
let crate = msw.db.crate.create({ name: 'foo', documentation: 'https://foo.io/docs' });
7+
msw.db.version.create({ crate, num: '1.0.0' });
98

109
await page.goto('/crates/foo');
1110
await expect(page.locator('[data-test-docs-link] a')).toHaveAttribute('href', 'https://foo.io/docs');
1211
});
1312

1413
test('show no docs link if `documentation` is unspecified and there are no related docs.rs builds', async ({
1514
page,
16-
mirage,
15+
msw,
1716
}) => {
18-
await mirage.addHook(server => {
19-
let crate = server.create('crate', { name: 'foo' });
20-
server.create('version', { crate, num: '1.0.0' });
17+
let crate = msw.db.crate.create({ name: 'foo' });
18+
msw.db.version.create({ crate, num: '1.0.0' });
2119

22-
server.get('https://docs.rs/crate/:crate/:version/status.json', 'not found', 404);
23-
});
20+
let error = HttpResponse.text('not found', { status: 404 });
21+
msw.worker.use(http.get('https://docs.rs/crate/:crate/:version/status.json', () => error));
2422

2523
await page.goto('/crates/foo');
2624
await expect(page.getByRole('link', { name: 'crates.io', exact: true })).toHaveCount(1);
@@ -30,74 +28,69 @@ test.describe('Route | crate.version | docs link', { tag: '@routes' }, () => {
3028

3129
test('show docs link if `documentation` is unspecified and there are related docs.rs builds', async ({
3230
page,
33-
mirage,
31+
msw,
3432
}) => {
35-
await mirage.addHook(server => {
36-
let crate = server.create('crate', { name: 'foo' });
37-
server.create('version', { crate, num: '1.0.0' });
38-
39-
server.get('https://docs.rs/crate/:crate/:version/status.json', {
40-
doc_status: true,
41-
version: '1.0.0',
42-
});
33+
let crate = msw.db.crate.create({ name: 'foo' });
34+
msw.db.version.create({ crate, num: '1.0.0' });
35+
36+
let response = HttpResponse.json({
37+
doc_status: true,
38+
version: '1.0.0',
4339
});
40+
msw.worker.use(http.get('https://docs.rs/crate/:crate/:version/status.json', () => response));
4441

4542
await page.goto('/crates/foo');
4643
await expect(page.locator('[data-test-docs-link] a')).toHaveAttribute('href', 'https://docs.rs/foo/1.0.0');
4744
});
4845

4946
test('show original docs link if `documentation` points to docs.rs and there are no related docs.rs builds', async ({
5047
page,
51-
mirage,
48+
msw,
5249
}) => {
53-
await mirage.addHook(server => {
54-
let crate = server.create('crate', { name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
55-
server.create('version', { crate, num: '1.0.0' });
50+
let crate = msw.db.crate.create({ name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
51+
msw.db.version.create({ crate, num: '1.0.0' });
5652

57-
server.get('https://docs.rs/crate/:crate/:version/status.json', 'not found', 404);
58-
});
53+
let error = HttpResponse.text('not found', { status: 404 });
54+
msw.worker.use(http.get('https://docs.rs/crate/:crate/:version/status.json', () => error));
5955

6056
await page.goto('/crates/foo');
6157
await expect(page.locator('[data-test-docs-link] a')).toHaveAttribute('href', 'https://docs.rs/foo/0.6.2');
6258
});
6359

6460
test('show updated docs link if `documentation` points to docs.rs and there are related docs.rs builds', async ({
6561
page,
66-
mirage,
62+
msw,
6763
}) => {
68-
await mirage.addHook(server => {
69-
let crate = server.create('crate', { name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
70-
server.create('version', { crate, num: '1.0.0' });
71-
72-
server.get('https://docs.rs/crate/:crate/:version/status.json', {
73-
doc_status: true,
74-
version: '1.0.0',
75-
});
64+
let crate = msw.db.crate.create({ name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
65+
msw.db.version.create({ crate, num: '1.0.0' });
66+
67+
let response = HttpResponse.json({
68+
doc_status: true,
69+
version: '1.0.0',
7670
});
71+
msw.worker.use(http.get('https://docs.rs/crate/:crate/:version/status.json', () => response));
7772

7873
await page.goto('/crates/foo');
7974
await expect(page.locator('[data-test-docs-link] a')).toHaveAttribute('href', 'https://docs.rs/foo/1.0.0');
8075
});
8176

82-
test('ajax errors are ignored', async ({ page, mirage }) => {
83-
await mirage.addHook(server => {
84-
let crate = server.create('crate', { name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
85-
server.create('version', { crate, num: '1.0.0' });
77+
test('ajax errors are ignored', async ({ page, msw }) => {
78+
let crate = msw.db.crate.create({ name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
79+
msw.db.version.create({ crate, num: '1.0.0' });
8680

87-
server.get('https://docs.rs/crate/:crate/:version/status.json', 'error', 500);
88-
});
81+
let error = HttpResponse.text('error', { status: 500 });
82+
msw.worker.use(http.get('https://docs.rs/crate/:crate/:version/status.json', () => error));
8983

9084
await page.goto('/crates/foo');
9185
await expect(page.locator('[data-test-docs-link] a')).toHaveAttribute('href', 'https://docs.rs/foo/0.6.2');
9286
});
9387

94-
test('empty docs.rs responses are ignored', async ({ page, mirage }) => {
95-
await mirage.addHook(server => {
96-
let crate = server.create('crate', { name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
97-
server.create('version', { crate, num: '0.6.2' });
88+
test('empty docs.rs responses are ignored', async ({ page, msw }) => {
89+
let crate = msw.db.crate.create({ name: 'foo', documentation: 'https://docs.rs/foo/0.6.2' });
90+
msw.db.version.create({ crate, num: '0.6.2' });
9891

99-
server.get('https://docs.rs/crate/:crate/:version/status.json', {});
100-
});
92+
let response = HttpResponse.json({});
93+
msw.worker.use(http.get('https://docs.rs/crate/:crate/:version/status.json', () => response));
10194

10295
await page.goto('/crates/foo');
10396
await expect(page.locator('[data-test-docs-link] a')).toHaveAttribute('href', 'https://docs.rs/foo/0.6.2');

0 commit comments

Comments
 (0)