Skip to content

Commit d0675d3

Browse files
committed
mirage/crate: Replace keywords property with relationship
1 parent b96280f commit d0675d3

File tree

5 files changed

+7
-4
lines changed

5 files changed

+7
-4
lines changed

mirage/factories/crate.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export default Factory.extend({
2323
updated_at: '2017-02-24T12:34:56Z',
2424

2525
badges: () => [],
26-
keywords: () => [],
2726
versions: () => [],
2827
_extra_downloads: () => [],
2928
_owner_teams: () => [],

mirage/models/crate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ import { Model, hasMany } from 'ember-cli-mirage';
22

33
export default Model.extend({
44
categories: hasMany(),
5+
keywords: hasMany(),
56
});

mirage/route-handlers/crates.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,14 @@ export function register(server) {
3838
let crate = schema.crates.find(crateId);
3939
if (!crate) return notFound();
4040

41-
let keywords = schema.keywords.all().filter(keyword => (crate.keywords || []).indexOf(keyword.id) !== -1);
4241
let versions = schema.versions
4342
.all()
4443
.filter(version => (crate.versions || []).indexOf(parseInt(version.id, 10)) !== -1);
4544

4645
return {
4746
...this.serialize(crate),
4847
...this.serialize(crate.categories),
49-
...this.serialize(keywords),
48+
...this.serialize(crate.keywords),
5049
...this.serialize(versions),
5150
};
5251
});

mirage/serializers/crate.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,8 @@ export default BaseSerializer.extend({
4848
_adjust(hash) {
4949
hash.categories = hash.category_ids;
5050
delete hash.category_ids;
51+
52+
hash.keywords = hash.keyword_ids;
53+
delete hash.keyword_ids;
5154
},
5255
});

tests/mirage/crates-test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,13 @@ module('Mirage | Keywords', function(hooks) {
304304
test('includes related keywords', async function(assert) {
305305
this.server.create('keyword', { keyword: 'no-std' });
306306
this.server.create('keyword', { keyword: 'cli' });
307-
this.server.create('crate', { name: 'rand', keywords: ['no-std'] });
307+
this.server.create('crate', { name: 'rand', keywordIds: ['no-std'] });
308308

309309
let response = await fetch('/api/v1/crates/rand');
310310
assert.equal(response.status, 200);
311311

312312
let responsePayload = await response.json();
313+
assert.deepEqual(responsePayload.crate.keywords, ['no-std']);
313314
assert.deepEqual(responsePayload.keywords, [
314315
{
315316
crates_cnt: 0,

0 commit comments

Comments
 (0)