Skip to content

Commit 4e00256

Browse files
committed
e2e/acceptance/crate: Migrate from mirage to @crates-io/msw
1 parent 78249e2 commit 4e00256

File tree

1 file changed

+45
-67
lines changed

1 file changed

+45
-67
lines changed

e2e/acceptance/crate.spec.ts

Lines changed: 45 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { expect, test } from '@/e2e/helper';
2+
import { loadFixtures } from '@crates-io/msw/fixtures';
3+
import { http, HttpResponse } from 'msw';
24

35
test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
4-
test('visiting a crate page from the front page', async ({ page, mirage }) => {
5-
await mirage.addHook(server => {
6-
let crate = server.create('crate', { name: 'nanomsg', newest_version: '0.6.1' });
7-
server.create('version', { crate, num: '0.6.1' });
8-
});
6+
test('visiting a crate page from the front page', async ({ page, msw }) => {
7+
let crate = msw.db.crate.create({ name: 'nanomsg', newest_version: '0.6.1' });
8+
msw.db.version.create({ crate, num: '0.6.1' });
99

1010
await page.goto('/');
1111
await page.click('[data-test-just-updated] [data-test-crate-link="0"]');
@@ -17,12 +17,10 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
1717
await expect(page.locator('[data-test-heading] [data-test-crate-version]')).toHaveText('v0.6.1');
1818
});
1919

20-
test('visiting /crates/nanomsg', async ({ page, mirage, ember, percy, a11y }) => {
21-
await mirage.addHook(server => {
22-
let crate = server.create('crate', { name: 'nanomsg' });
23-
server.create('version', { crate, num: '0.6.0' });
24-
server.create('version', { crate, num: '0.6.1', rust_version: '1.69' });
25-
});
20+
test('visiting /crates/nanomsg', async ({ page, msw, ember, percy, a11y }) => {
21+
let crate = msw.db.crate.create({ name: 'nanomsg' });
22+
msw.db.version.create({ crate, num: '0.6.0' });
23+
msw.db.version.create({ crate, num: '0.6.1', rust_version: '1.69' });
2624

2725
await page.goto('/crates/nanomsg');
2826

@@ -40,12 +38,10 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
4038
await a11y.audit();
4139
});
4240

43-
test('visiting /crates/nanomsg/', async ({ page, mirage, ember }) => {
44-
await mirage.addHook(server => {
45-
let crate = server.create('crate', { name: 'nanomsg' });
46-
server.create('version', { crate, num: '0.6.0' });
47-
server.create('version', { crate, num: '0.6.1' });
48-
});
41+
test('visiting /crates/nanomsg/', async ({ page, msw, ember }) => {
42+
let crate = msw.db.crate.create({ name: 'nanomsg' });
43+
msw.db.version.create({ crate, num: '0.6.0' });
44+
msw.db.version.create({ crate, num: '0.6.1' });
4945

5046
await page.goto('/crates/nanomsg/');
5147

@@ -60,12 +56,10 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
6056
await expect(page.locator('[data-test-crate-stats-label]')).toHaveText('Stats Overview');
6157
});
6258

63-
test('visiting /crates/nanomsg/0.6.0', async ({ page, mirage, ember, percy, a11y }) => {
64-
await mirage.addHook(server => {
65-
let crate = server.create('crate', { name: 'nanomsg' });
66-
server.create('version', { crate, num: '0.6.0' });
67-
server.create('version', { crate, num: '0.6.1' });
68-
});
59+
test('visiting /crates/nanomsg/0.6.0', async ({ page, msw, ember, percy, a11y }) => {
60+
let crate = msw.db.crate.create({ name: 'nanomsg' });
61+
msw.db.version.create({ crate, num: '0.6.0' });
62+
msw.db.version.create({ crate, num: '0.6.1' });
6963

7064
await page.goto('/crates/nanomsg/0.6.0');
7165

@@ -105,12 +99,10 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
10599
await expect(page.locator('[data-test-try-again]')).toBeVisible();
106100
});
107101

108-
test('unknown versions fall back to latest version and show an error message', async ({ page, mirage }) => {
109-
await mirage.addHook(server => {
110-
let crate = server.create('crate', { name: 'nanomsg' });
111-
server.create('version', { crate, num: '0.6.0' });
112-
server.create('version', { crate, num: '0.6.1' });
113-
});
102+
test('unknown versions fall back to latest version and show an error message', async ({ page, msw }) => {
103+
let crate = msw.db.crate.create({ name: 'nanomsg' });
104+
msw.db.version.create({ crate, num: '0.6.0' });
105+
msw.db.version.create({ crate, num: '0.6.1' });
114106

115107
await page.goto('/crates/nanomsg/0.7.0');
116108

@@ -121,14 +113,12 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
121113
await expect(page.locator('[data-test-try-again]')).toHaveCount(0);
122114
});
123115

124-
test('other versions loading error shows an error message', async ({ page, mirage }) => {
125-
await mirage.addHook(server => {
126-
let crate = server.create('crate', { name: 'nanomsg' });
127-
server.create('version', { crate, num: '0.6.0' });
128-
server.create('version', { crate, num: '0.6.1' });
116+
test('other versions loading error shows an error message', async ({ page, msw }) => {
117+
let crate = msw.db.crate.create({ name: 'nanomsg' });
118+
msw.db.version.create({ crate, num: '0.6.0' });
119+
msw.db.version.create({ crate, num: '0.6.1' });
129120

130-
server.get('/api/v1/crates/:crate_name/versions', {}, 500);
131-
});
121+
await msw.worker.use(http.get('/api/v1/crates/:crate_name/versions', () => HttpResponse.json({}, { status: 500 })));
132122

133123
await page.goto('/');
134124
await page.click('[data-test-just-updated] [data-test-crate-link="0"]');
@@ -139,11 +129,9 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
139129
await expect(page.locator('[data-test-try-again]')).toBeVisible();
140130
});
141131

142-
test('works for non-canonical names', async ({ page, mirage }) => {
143-
await mirage.addHook(server => {
144-
let crate = server.create('crate', { name: 'foo-bar' });
145-
server.create('version', { crate });
146-
});
132+
test('works for non-canonical names', async ({ page, msw }) => {
133+
let crate = msw.db.crate.create({ name: 'foo-bar' });
134+
msw.db.version.create({ crate });
147135

148136
await page.goto('/crates/foo_bar');
149137

@@ -153,10 +141,8 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
153141
await expect(page.locator('[data-test-heading] [data-test-crate-name]')).toHaveText('foo-bar');
154142
});
155143

156-
test('navigating to the all versions page', async ({ page, mirage }) => {
157-
await mirage.addHook(server => {
158-
server.loadFixtures();
159-
});
144+
test('navigating to the all versions page', async ({ page, msw }) => {
145+
loadFixtures(msw.db);
160146

161147
await page.goto('/crates/nanomsg');
162148
await page.click('[data-test-versions-tab] a');
@@ -239,13 +225,11 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
239225
await expect(page.locator('[data-test-license]')).toHaveText('MIT OR Apache-2.0');
240226
});
241227

242-
test.skip('crates can be yanked by owner', async ({ page, mirage }) => {
243-
await mirage.addHook(server => {
244-
server.loadFixtures();
228+
test.skip('crates can be yanked by owner', async ({ page, msw }) => {
229+
loadFixtures(msw.db);
245230

246-
let user = server.schema['users'].findBy({ login: 'thehydroimpulse' });
247-
authenticateAs(user);
248-
});
231+
let user = msw.db.user.findFirst({ where: { login: { equals: 'thehydroimpulse' } } });
232+
await msw.authenticateAs(user);
249233

250234
await page.goto('/crates/nanomsg/0.5.0');
251235
const yankButton = page.locator('[data-test-version-yank-button="0.5.0"]');
@@ -261,36 +245,30 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
261245
await expect(yankButton).toBeVisible();
262246
});
263247

264-
test('navigating to the owners page when not logged in', async ({ page, mirage }) => {
265-
await mirage.addHook(server => {
266-
server.loadFixtures();
267-
});
248+
test('navigating to the owners page when not logged in', async ({ page, msw }) => {
249+
loadFixtures(msw.db);
268250

269251
await page.goto('/crates/nanomsg');
270252

271253
await expect(page.locator('[data-test-settings-tab]')).toHaveCount(0);
272254
});
273255

274-
test('navigating to the owners page when not an owner', async ({ page, mirage }) => {
275-
await mirage.addHook(server => {
276-
server.loadFixtures();
256+
test('navigating to the owners page when not an owner', async ({ page, msw }) => {
257+
loadFixtures(msw.db);
277258

278-
let user = server.schema['users'].findBy({ login: 'iain8' });
279-
authenticateAs(user);
280-
});
259+
let user = msw.db.user.findFirst({ where: { login: { equals: 'iain8' } } });
260+
await msw.authenticateAs(user);
281261

282262
await page.goto('/crates/nanomsg');
283263

284264
await expect(page.locator('[data-test-settings-tab]')).toHaveCount(0);
285265
});
286266

287-
test('navigating to the settings page', async ({ page, mirage }) => {
288-
await mirage.addHook(server => {
289-
server.loadFixtures();
267+
test('navigating to the settings page', async ({ page, msw }) => {
268+
loadFixtures(msw.db);
290269

291-
let user = server.schema['users'].findBy({ login: 'thehydroimpulse' });
292-
authenticateAs(user);
293-
});
270+
let user = msw.db.user.findFirst({ where: { login: { equals: 'thehydroimpulse' } } });
271+
await msw.authenticateAs(user);
294272

295273
await page.goto('/crates/nanomsg');
296274
await page.click('[data-test-settings-tab] a');

0 commit comments

Comments
 (0)