Skip to content

Commit 862f8d0

Browse files
committed
mirage/crate: Replace versions property with relationship
1 parent d0675d3 commit 862f8d0

File tree

6 files changed

+9
-14
lines changed

6 files changed

+9
-14
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-
versions: () => [],
2726
_extra_downloads: () => [],
2827
_owner_teams: () => [],
2928
_owner_users: () => [],

mirage/factories/version.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ export default Factory.extend({
1818

1919
crate_size: i => (((i + 13) * 42) % 13) * 54321,
2020

21-
afterCreate(version, server) {
21+
afterCreate(version) {
2222
if (!version.crateId) {
2323
throw new Error(`Missing \`crate\` relationship on \`version:${version.num}\``);
2424
}
25-
26-
let crate = server.schema.crates.find(version.crateId);
27-
crate.update({ versions: crate.versions.concat(parseInt(version.id, 10)) });
2825
},
2926
});

mirage/models/crate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ import { Model, hasMany } from 'ember-cli-mirage';
33
export default Model.extend({
44
categories: hasMany(),
55
keywords: hasMany(),
6+
versions: hasMany(),
67
});

mirage/route-handlers/crates.js

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

41-
let versions = schema.versions
42-
.all()
43-
.filter(version => (crate.versions || []).indexOf(parseInt(version.id, 10)) !== -1);
44-
4541
return {
4642
...this.serialize(crate),
4743
...this.serialize(crate.categories),
4844
...this.serialize(crate.keywords),
49-
...this.serialize(versions),
45+
...this.serialize(crate.versions),
5046
};
5147
});
5248

@@ -59,7 +55,7 @@ export function register(server) {
5955
let crate = schema.crates.find(crateId);
6056
if (!crate) return notFound();
6157

62-
return schema.versions.where({ crateId }).sort((a, b) => compareIsoDates(b.created_at, a.created_at));
58+
return crate.versions.sort((a, b) => compareIsoDates(b.created_at, a.created_at));
6359
});
6460

6561
server.get('/api/v1/crates/:crate_id/:version_num/authors', (schema, request) => {
@@ -155,9 +151,7 @@ export function register(server) {
155151
let crate = schema.crates.find(crateId);
156152
if (!crate) return notFound();
157153

158-
let versionDownloads = schema.versionDownloads
159-
.all()
160-
.filter(it => crate.versions.indexOf(parseInt(it.versionId, 10)) !== -1);
154+
let versionDownloads = schema.versionDownloads.all().filter(it => it.version.crateId === crateId);
161155

162156
return withMeta(this.serialize(versionDownloads), { extra_downloads: crate._extra_downloads });
163157
});

mirage/serializers/crate.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,8 @@ export default BaseSerializer.extend({
5151

5252
hash.keywords = hash.keyword_ids;
5353
delete hash.keyword_ids;
54+
55+
hash.versions = hash.version_ids;
56+
delete hash.version_ids;
5457
},
5558
});

tests/mirage/crates-test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ module('Mirage | Keywords', function(hooks) {
224224
assert.equal(response.status, 200);
225225

226226
let responsePayload = await response.json();
227+
assert.deepEqual(responsePayload.crate.versions, ['1', '2', '3']);
227228
assert.deepEqual(responsePayload.versions, [
228229
{
229230
id: '1',

0 commit comments

Comments
 (0)