Skip to content

Commit 1b0bb8e

Browse files
committed
tests/acceptance/invites: Migrate from mirage to @crates-io/msw
1 parent 11bab72 commit 1b0bb8e

File tree

1 file changed

+80
-26
lines changed

1 file changed

+80
-26
lines changed

tests/acceptance/invites-test.js

Lines changed: 80 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,33 @@ import { click, currentURL } from '@ember/test-helpers';
22
import { module, test } from 'qunit';
33

44
import percySnapshot from '@percy/ember';
5-
import { Response } from 'miragejs';
5+
import { http, HttpResponse } from 'msw';
66

77
import { setupApplicationTest } from 'crates-io/tests/helpers';
88

99
import { visit } from '../helpers/visit-ignoring-abort';
1010

1111
module('Acceptance | /me/pending-invites', function (hooks) {
12-
setupApplicationTest(hooks);
12+
setupApplicationTest(hooks, { msw: true });
1313

1414
function prepare(context) {
15-
let inviter = context.server.create('user', { name: 'janed' });
16-
let inviter2 = context.server.create('user', { name: 'wycats' });
15+
let inviter = context.db.user.create({ name: 'janed' });
16+
let inviter2 = context.db.user.create({ name: 'wycats' });
1717

18-
let user = context.server.create('user');
18+
let user = context.db.user.create();
1919

20-
let nanomsg = context.server.create('crate', { name: 'nanomsg' });
21-
context.server.create('version', { crate: nanomsg });
22-
context.server.create('crate-owner-invitation', {
20+
let nanomsg = context.db.crate.create({ name: 'nanomsg' });
21+
context.db.version.create({ crate: nanomsg });
22+
context.db.crateOwnerInvitation.create({
2323
crate: nanomsg,
2424
createdAt: '2016-12-24T12:34:56Z',
2525
invitee: user,
2626
inviter,
2727
});
2828

29-
let ember = context.server.create('crate', { name: 'ember-rs' });
30-
context.server.create('version', { crate: ember });
31-
context.server.create('crate-owner-invitation', {
29+
let ember = context.db.crate.create({ name: 'ember-rs' });
30+
context.db.version.create({ crate: ember });
31+
context.db.crateOwnerInvitation.create({
3232
crate: ember,
3333
createdAt: '2020-12-31T12:34:56Z',
3434
invitee: user,
@@ -73,7 +73,7 @@ module('Acceptance | /me/pending-invites', function (hooks) {
7373
test('shows empty list message', async function (assert) {
7474
prepare(this);
7575

76-
this.server.schema.crateOwnerInvitations.all().destroy();
76+
this.db.crateOwnerInvitation.deleteMany({});
7777

7878
await visit('/me/pending-invites');
7979
assert.strictEqual(currentURL(), '/me/pending-invites');
@@ -84,9 +84,22 @@ module('Acceptance | /me/pending-invites', function (hooks) {
8484
test('invites can be declined', async function (assert) {
8585
let { nanomsg, user } = prepare(this);
8686

87-
let { crateOwnerInvitations, crateOwnerships } = this.server.schema;
88-
assert.strictEqual(crateOwnerInvitations.where({ crateId: nanomsg.id, inviteeId: user.id }).length, 1);
89-
assert.strictEqual(crateOwnerships.where({ crateId: nanomsg.id, userId: user.id }).length, 0);
87+
let { crateOwnerInvitation, crateOwnership } = this.db;
88+
let invites = crateOwnerInvitation.findMany({
89+
where: {
90+
crate: { id: { equals: nanomsg.id } },
91+
invitee: { id: { equals: user.id } },
92+
},
93+
});
94+
assert.strictEqual(invites.length, 1);
95+
96+
let owners = crateOwnership.findMany({
97+
where: {
98+
crate: { id: { equals: nanomsg.id } },
99+
user: { id: { equals: user.id } },
100+
},
101+
});
102+
assert.strictEqual(owners.length, 0);
90103

91104
await visit('/me/pending-invites');
92105
assert.strictEqual(currentURL(), '/me/pending-invites');
@@ -100,14 +113,28 @@ module('Acceptance | /me/pending-invites', function (hooks) {
100113
assert.dom('[data-test-invite="nanomsg"] [data-test-crate-link]').doesNotExist();
101114
assert.dom('[data-test-invite="nanomsg"] [data-test-inviter-link]').doesNotExist();
102115

103-
assert.strictEqual(crateOwnerInvitations.where({ crateId: nanomsg.id, inviteeId: user.id }).length, 0);
104-
assert.strictEqual(crateOwnerships.where({ crateId: nanomsg.id, userId: user.id }).length, 0);
116+
invites = crateOwnerInvitation.findMany({
117+
where: {
118+
crate: { id: { equals: nanomsg.id } },
119+
invitee: { id: { equals: user.id } },
120+
},
121+
});
122+
assert.strictEqual(invites.length, 0);
123+
124+
owners = crateOwnership.findMany({
125+
where: {
126+
crate: { id: { equals: nanomsg.id } },
127+
user: { id: { equals: user.id } },
128+
},
129+
});
130+
assert.strictEqual(owners.length, 0);
105131
});
106132

107133
test('error message is shown if decline request fails', async function (assert) {
108134
prepare(this);
109135

110-
this.server.put('/api/v1/me/crate_owner_invitations/:crate_id', () => new Response(500));
136+
let error = HttpResponse.json({}, { status: 500 });
137+
this.worker.use(http.put('/api/v1/me/crate_owner_invitations/:crate_id', () => error));
111138

112139
await visit('/me/pending-invites');
113140
assert.strictEqual(currentURL(), '/me/pending-invites');
@@ -121,9 +148,22 @@ module('Acceptance | /me/pending-invites', function (hooks) {
121148
test('invites can be accepted', async function (assert) {
122149
let { nanomsg, user } = prepare(this);
123150

124-
let { crateOwnerInvitations, crateOwnerships } = this.server.schema;
125-
assert.strictEqual(crateOwnerInvitations.where({ crateId: nanomsg.id, inviteeId: user.id }).length, 1);
126-
assert.strictEqual(crateOwnerships.where({ crateId: nanomsg.id, userId: user.id }).length, 0);
151+
let { crateOwnerInvitation, crateOwnership } = this.db;
152+
let invites = crateOwnerInvitation.findMany({
153+
where: {
154+
crate: { id: { equals: nanomsg.id } },
155+
invitee: { id: { equals: user.id } },
156+
},
157+
});
158+
assert.strictEqual(invites.length, 1);
159+
160+
let owners = crateOwnership.findMany({
161+
where: {
162+
crate: { id: { equals: nanomsg.id } },
163+
user: { id: { equals: user.id } },
164+
},
165+
});
166+
assert.strictEqual(owners.length, 0);
127167

128168
await visit('/me/pending-invites');
129169
assert.strictEqual(currentURL(), '/me/pending-invites');
@@ -139,14 +179,28 @@ module('Acceptance | /me/pending-invites', function (hooks) {
139179

140180
await percySnapshot(assert);
141181

142-
assert.strictEqual(crateOwnerInvitations.where({ crateId: nanomsg.id, inviteeId: user.id }).length, 0);
143-
assert.strictEqual(crateOwnerships.where({ crateId: nanomsg.id, userId: user.id }).length, 1);
182+
invites = crateOwnerInvitation.findMany({
183+
where: {
184+
crate: { id: { equals: nanomsg.id } },
185+
invitee: { id: { equals: user.id } },
186+
},
187+
});
188+
assert.strictEqual(invites.length, 0);
189+
190+
owners = crateOwnership.findMany({
191+
where: {
192+
crate: { id: { equals: nanomsg.id } },
193+
user: { id: { equals: user.id } },
194+
},
195+
});
196+
assert.strictEqual(owners.length, 1);
144197
});
145198

146199
test('error message is shown if accept request fails', async function (assert) {
147200
prepare(this);
148201

149-
this.server.put('/api/v1/me/crate_owner_invitations/:crate_id', () => new Response(500));
202+
let error = HttpResponse.json({}, { status: 500 });
203+
this.worker.use(http.put('/api/v1/me/crate_owner_invitations/:crate_id', () => error));
150204

151205
await visit('/me/pending-invites');
152206
assert.strictEqual(currentURL(), '/me/pending-invites');
@@ -162,8 +216,8 @@ module('Acceptance | /me/pending-invites', function (hooks) {
162216

163217
let errorMessage =
164218
'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.';
165-
let payload = { errors: [{ detail: errorMessage }] };
166-
this.server.put('/api/v1/me/crate_owner_invitations/:crate_id', payload, 410);
219+
let error = HttpResponse.json({ errors: [{ detail: errorMessage }] }, { status: 410 });
220+
this.worker.use(http.put('/api/v1/me/crate_owner_invitations/:crate_id', () => error));
167221

168222
await visit('/me/pending-invites');
169223
assert.strictEqual(currentURL(), '/me/pending-invites');

0 commit comments

Comments
 (0)