Skip to content

Commit 52a7aee

Browse files
committed
mirage: Add tests for GET /api/v1/me/crate_owner_invitations endpoint
These tests are a little pointless because they test the route handler implementation in the exact same test, but they will allow us to refactor those route handlers into generic implementations using proper factories
1 parent ef58484 commit 52a7aee

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

tests/mirage/invitations-test.js

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import { module, test } from 'qunit';
2+
3+
import fetch from 'fetch';
4+
import timekeeper from 'timekeeper';
5+
6+
import { setupTest } from 'cargo/tests/helpers';
7+
8+
import setupMirage from '../helpers/setup-mirage';
9+
10+
module('Mirage | Crate Owner Invitations', function (hooks) {
11+
setupTest(hooks);
12+
setupMirage(hooks);
13+
14+
module('GET /api/v1/me/crate_owner_invitations', function () {
15+
test('empty case', async function (assert) {
16+
this.server.get('/api/v1/me/crate_owner_invitations', { crate_owner_invitations: [] });
17+
18+
let response = await fetch('/api/v1/me/crate_owner_invitations');
19+
assert.equal(response.status, 200);
20+
21+
let responsePayload = await response.json();
22+
assert.deepEqual(responsePayload, { crate_owner_invitations: [] });
23+
});
24+
25+
test('returns a paginated crates list', async function (assert) {
26+
timekeeper.freeze(new Date('2016-12-24T12:34:56Z'));
27+
28+
let user = this.server.create('user');
29+
this.server.create('mirage-session', { user });
30+
31+
let inviter = this.server.create('user', { name: 'janed' });
32+
let inviter2 = this.server.create('user', { name: 'wycats' });
33+
this.server.get('/api/v1/me/crate_owner_invitations', function () {
34+
let users = [this.serialize(inviter, 'user').user, this.serialize(inviter2, 'user').user];
35+
36+
return {
37+
crate_owner_invitations: [
38+
{
39+
invited_by_username: 'janed',
40+
crate_name: 'nanomsg',
41+
crate_id: 42,
42+
created_at: '2016-12-24T12:34:56Z',
43+
invitee_id: parseInt(user.id, 10),
44+
inviter_id: parseInt(inviter.id, 10),
45+
},
46+
{
47+
invited_by_username: 'wycats',
48+
crate_name: 'ember-rs',
49+
crate_id: 1,
50+
created_at: '2020-12-31T12:34:56Z',
51+
invitee_id: parseInt(user.id, 10),
52+
inviter_id: parseInt(inviter2.id, 10),
53+
},
54+
],
55+
users,
56+
};
57+
});
58+
59+
let response = await fetch('/api/v1/me/crate_owner_invitations');
60+
assert.equal(response.status, 200);
61+
62+
let responsePayload = await response.json();
63+
assert.deepEqual(responsePayload, {
64+
crate_owner_invitations: [
65+
{
66+
crate_id: 42,
67+
crate_name: 'nanomsg',
68+
created_at: '2016-12-24T12:34:56Z',
69+
invited_by_username: 'janed',
70+
invitee_id: Number(user.id),
71+
inviter_id: Number(inviter.id),
72+
},
73+
{
74+
crate_id: 1,
75+
crate_name: 'ember-rs',
76+
created_at: '2020-12-31T12:34:56Z',
77+
invited_by_username: 'wycats',
78+
invitee_id: Number(user.id),
79+
inviter_id: Number(inviter2.id),
80+
},
81+
],
82+
users: [
83+
{
84+
avatar: 'https://avatars1.githubusercontent.com/u/14631425?v=4',
85+
id: Number(inviter.id),
86+
login: 'janed',
87+
name: 'janed',
88+
url: 'https://github.com/janed',
89+
},
90+
{
91+
avatar: 'https://avatars1.githubusercontent.com/u/14631425?v=4',
92+
id: Number(inviter2.id),
93+
login: 'wycats',
94+
name: 'wycats',
95+
url: 'https://github.com/wycats',
96+
},
97+
],
98+
});
99+
});
100+
});
101+
});

0 commit comments

Comments
 (0)