Skip to content

Commit b27c7f4

Browse files
committed
e2e/acceptance/token-invites: Migrate from mirage to @crates-io/msw
1 parent c7ddb5f commit b27c7f4

File tree

1 file changed

+11
-31
lines changed

1 file changed

+11
-31
lines changed

e2e/acceptance/token-invites.spec.ts

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
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 | /accept-invite/:token', { tag: '@acceptance' }, () => {
45
test('visiting to /accept-invite shows 404 page', async ({ page }) => {
@@ -23,44 +24,23 @@ test.describe('Acceptance | /accept-invite/:token', { tag: '@acceptance' }, () =
2324
);
2425
});
2526

26-
test('shows error for expired token', async ({ page, mirage }) => {
27+
test('shows error for expired token', async ({ page, msw }) => {
2728
let errorMessage =
2829
'The invitation to become an owner of the demo_crate crate expired. Please reach out to an owner of the crate to request a new invitation.';
29-
await page.exposeBinding('_errorMessage', () => errorMessage);
30-
await mirage.addHook(server => {
31-
server.put(
32-
'/api/v1/me/crate_owner_invitations/accept/:token',
33-
async () => {
34-
let errorMessage = await globalThis._errorMessage();
35-
let payload = { errors: [{ detail: errorMessage }] };
36-
return payload;
37-
},
38-
410,
39-
);
40-
});
30+
let error = HttpResponse.json({ errors: [{ detail: errorMessage }] }, { status: 410 });
31+
await msw.worker.use(http.put('/api/v1/me/crate_owner_invitations/accept/:token', () => error));
4132

4233
await page.goto('/accept-invite/secret123');
4334
await expect(page).toHaveURL('/accept-invite/secret123');
4435
await expect(page.locator('[data-test-error-message]')).toHaveText(errorMessage);
4536
});
4637

47-
test('shows success for known token', async ({ page, mirage, percy }) => {
48-
await mirage.addHook(server => {
49-
let inviter = server.create('user');
50-
let invitee = server.create('user');
51-
let crate = server.create('crate', { name: 'nanomsg' });
52-
server.create('version', { crate });
53-
let invite = server.create('crate-owner-invitation', { crate, invitee, inviter });
54-
55-
globalThis.invite = invite;
56-
});
57-
58-
// NOTE: Because the current implementation only works with the miragejs server running in the
59-
// browser, we need to navigate to a random page to trigger the server startup and generate a
60-
// token. This step will not be necessary in production or once we migrate the miragejs server
61-
// to run in nodejs.
62-
await page.goto(`/accept-invite/123`);
63-
const invite = await page.evaluate(() => ({ token: globalThis.invite.token }));
38+
test('shows success for known token', async ({ page, msw, percy }) => {
39+
let inviter = msw.db.user.create();
40+
let invitee = msw.db.user.create();
41+
let crate = msw.db.crate.create({ name: 'nanomsg' });
42+
msw.db.version.create({ crate });
43+
let invite = msw.db.crateOwnerInvitation.create({ crate, invitee, inviter });
6444

6545
await page.goto(`/accept-invite/${invite.token}`);
6646
await expect(page).toHaveURL(`/accept-invite/${invite.token}`);

0 commit comments

Comments
 (0)