Skip to content

Commit 22e1e75

Browse files
committed
mirage: Reset version.yank_message when unyanking
1 parent 387d1da commit 22e1e75

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

mirage/route-handlers/crates.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ export function register(server) {
284284
const body = JSON.parse(request.requestBody);
285285
version.update({
286286
yanked: body.version.yanked,
287-
yank_message: body.version.yank_message,
287+
yank_message: body.version.yanked ? body.version.yank_message || null : null,
288288
});
289289

290290
return this.serialize(version);
@@ -329,7 +329,7 @@ export function register(server) {
329329
return notFound();
330330
}
331331

332-
version.update({ yanked: false });
332+
version.update({ yanked: false, yank_message: null });
333333

334334
return { ok: true };
335335
});

tests/mirage/crates/versions/patch-test.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ const YANK_BODY = JSON.stringify({
1212
},
1313
});
1414

15+
const UNYANK_BODY = JSON.stringify({
16+
version: {
17+
yanked: false,
18+
},
19+
});
20+
1521
module('Mirage | PATCH /api/v1/crates/:crate/:version', function (hooks) {
1622
setupTest(hooks);
1723
setupMirage(hooks);
@@ -81,5 +87,34 @@ module('Mirage | PATCH /api/v1/crates/:crate/:version', function (hooks) {
8187
user.reload();
8288
assert.true(version.yanked);
8389
assert.strictEqual(version.yank_message, 'some reason');
90+
91+
response = await fetch('/api/v1/crates/foo/1.0.0', { method: 'PATCH', body: UNYANK_BODY });
92+
assert.strictEqual(response.status, 200);
93+
assert.deepEqual(await response.json(), {
94+
version: {
95+
crate: 'foo',
96+
crate_size: 0,
97+
created_at: '2010-06-16T21:30:45Z',
98+
dl_path: '/api/v1/crates/foo/1.0.0/download',
99+
downloads: 0,
100+
id: '1',
101+
license: 'MIT/Apache-2.0',
102+
links: {
103+
dependencies: '/api/v1/crates/foo/1.0.0/dependencies',
104+
version_downloads: '/api/v1/crates/foo/1.0.0/downloads',
105+
},
106+
num: '1.0.0',
107+
published_by: null,
108+
readme_path: '/api/v1/crates/foo/1.0.0/readme',
109+
rust_version: null,
110+
updated_at: '2017-02-24T12:34:56Z',
111+
yank_message: null,
112+
yanked: false,
113+
},
114+
});
115+
116+
user.reload();
117+
assert.false(version.yanked);
118+
assert.strictEqual(version.yank_message, null);
84119
});
85120
});

tests/mirage/crates/versions/yank/unyank-test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ module('Mirage | PUT /api/v1/crates/:crateId/unyank', function (hooks) {
3939

4040
test('unyanks the version', async function (assert) {
4141
let crate = this.server.create('crate', { name: 'foo' });
42-
let version = this.server.create('version', { crate, num: '1.0.0', yanked: true });
42+
let version = this.server.create('version', { crate, num: '1.0.0', yanked: true, yank_message: 'some reason' });
4343
assert.true(version.yanked);
44+
assert.strictEqual(version.yank_message, 'some reason');
4445

4546
let user = this.server.create('user');
4647
this.authenticateAs(user);
@@ -51,5 +52,6 @@ module('Mirage | PUT /api/v1/crates/:crateId/unyank', function (hooks) {
5152

5253
user.reload();
5354
assert.false(version.yanked);
55+
assert.strictEqual(version.yank_message, null);
5456
});
5557
});

0 commit comments

Comments
 (0)