Skip to content

Commit eb2e449

Browse files
committed
mirage: Add tests for yank/unyank route handlers
1 parent 77d46e7 commit eb2e449

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { module, test } from 'qunit';
2+
3+
import fetch from 'fetch';
4+
5+
import { setupTest } from '../../../../helpers';
6+
import setupMirage from '../../../../helpers/setup-mirage';
7+
8+
module('Mirage | PUT /api/v1/crates/:crateId/unyank', function (hooks) {
9+
setupTest(hooks);
10+
setupMirage(hooks);
11+
12+
test('returns 403 if unauthenticated', async function (assert) {
13+
let response = await fetch('/api/v1/crates/foo/1.0.0/unyank', { method: 'PUT' });
14+
assert.strictEqual(response.status, 403);
15+
assert.deepEqual(await response.json(), {
16+
errors: [{ detail: 'must be logged in to perform that action' }],
17+
});
18+
});
19+
20+
test('returns 404 for unknown crates', async function (assert) {
21+
let user = this.server.create('user');
22+
this.authenticateAs(user);
23+
24+
let response = await fetch('/api/v1/crates/foo/1.0.0/unyank', { method: 'PUT' });
25+
assert.strictEqual(response.status, 404);
26+
assert.deepEqual(await response.json(), { errors: [{ detail: 'Not Found' }] });
27+
});
28+
29+
test('returns 404 for unknown versions', async function (assert) {
30+
this.server.create('crate', { name: 'foo' });
31+
32+
let user = this.server.create('user');
33+
this.authenticateAs(user);
34+
35+
let response = await fetch('/api/v1/crates/foo/1.0.0/unyank', { method: 'PUT' });
36+
assert.strictEqual(response.status, 404);
37+
assert.deepEqual(await response.json(), { errors: [{ detail: 'Not Found' }] });
38+
});
39+
40+
test('unyanks the version', async function (assert) {
41+
let crate = this.server.create('crate', { name: 'foo' });
42+
let version = this.server.create('version', { crate, num: '1.0.0', yanked: true });
43+
assert.true(version.yanked);
44+
45+
let user = this.server.create('user');
46+
this.authenticateAs(user);
47+
48+
let response = await fetch('/api/v1/crates/foo/1.0.0/unyank', { method: 'PUT' });
49+
assert.strictEqual(response.status, 200);
50+
assert.deepEqual(await response.json(), { ok: true });
51+
52+
user.reload();
53+
assert.false(version.yanked);
54+
});
55+
});
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { module, test } from 'qunit';
2+
3+
import fetch from 'fetch';
4+
5+
import { setupTest } from '../../../../helpers';
6+
import setupMirage from '../../../../helpers/setup-mirage';
7+
8+
module('Mirage | DELETE /api/v1/crates/:crateId/yank', function (hooks) {
9+
setupTest(hooks);
10+
setupMirage(hooks);
11+
12+
test('returns 403 if unauthenticated', async function (assert) {
13+
let response = await fetch('/api/v1/crates/foo/1.0.0/yank', { method: 'DELETE' });
14+
assert.strictEqual(response.status, 403);
15+
assert.deepEqual(await response.json(), {
16+
errors: [{ detail: 'must be logged in to perform that action' }],
17+
});
18+
});
19+
20+
test('returns 404 for unknown crates', async function (assert) {
21+
let user = this.server.create('user');
22+
this.authenticateAs(user);
23+
24+
let response = await fetch('/api/v1/crates/foo/1.0.0/yank', { method: 'DELETE' });
25+
assert.strictEqual(response.status, 404);
26+
assert.deepEqual(await response.json(), { errors: [{ detail: 'Not Found' }] });
27+
});
28+
29+
test('returns 404 for unknown versions', async function (assert) {
30+
this.server.create('crate', { name: 'foo' });
31+
32+
let user = this.server.create('user');
33+
this.authenticateAs(user);
34+
35+
let response = await fetch('/api/v1/crates/foo/1.0.0/yank', { method: 'DELETE' });
36+
assert.strictEqual(response.status, 404);
37+
assert.deepEqual(await response.json(), { errors: [{ detail: 'Not Found' }] });
38+
});
39+
40+
test('yanks the version', async function (assert) {
41+
let crate = this.server.create('crate', { name: 'foo' });
42+
let version = this.server.create('version', { crate, num: '1.0.0', yanked: false });
43+
assert.false(version.yanked);
44+
45+
let user = this.server.create('user');
46+
this.authenticateAs(user);
47+
48+
let response = await fetch('/api/v1/crates/foo/1.0.0/yank', { method: 'DELETE' });
49+
assert.strictEqual(response.status, 200);
50+
assert.deepEqual(await response.json(), { ok: true });
51+
52+
user.reload();
53+
assert.true(version.yanked);
54+
});
55+
});

0 commit comments

Comments
 (0)