Skip to content

Commit 2eaad15

Browse files
committed
mirage/version-download: Replace version property with relationship
1 parent 63d45b6 commit 2eaad15

File tree

6 files changed

+43
-15
lines changed

6 files changed

+43
-15
lines changed

mirage/factories/version-download.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { Factory } from 'ember-cli-mirage';
22

33
export default Factory.extend({
4-
// version
5-
64
date: '2019-05-21',
75
downloads: i => (((i * 42) % 13) + 4) * 2345,
6+
7+
afterCreate(self) {
8+
if (!self.versionId) {
9+
throw new Error(`Missing \`version\` relationship on \`version-download:${self.date}\``);
10+
}
11+
},
812
});

mirage/fixtures/version-downloads.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ export default [
22
{
33
date: '2017-02-10T00:00:00Z',
44
downloads: 2,
5-
version: 40905,
5+
versionId: 40905,
66
},
77
{
88
date: '2017-02-10T00:00:00Z',
99
downloads: 1,
10-
version: 18445,
10+
versionId: 18445,
1111
},
1212
{
1313
date: '2017-02-11T00:00:00Z',
1414
downloads: 1,
15-
version: 40905,
15+
versionId: 40905,
1616
},
1717
];

mirage/models/version-download.js

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

3-
export default Model.extend({});
3+
export default Model.extend({
4+
version: belongsTo(),
5+
});

mirage/route-handlers/crates.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export function register(server) {
9797
let version = schema.versions.findBy({ crate: crateId, num: versionNum });
9898
if (!version) return { errors: [{ detail: `crate \`${crateId}\` does not have a version \`${versionNum}\`` }] };
9999

100-
return schema.versionDownloads.where({ version: version.id });
100+
return schema.versionDownloads.where({ versionId: version.id });
101101
});
102102

103103
server.get('/api/v1/crates/:crate_id/owner_user', function(schema, request) {
@@ -159,7 +159,7 @@ export function register(server) {
159159

160160
let versionDownloads = schema.versionDownloads
161161
.all()
162-
.filter(it => crate.versions.indexOf(parseInt(it.version, 10)) !== -1);
162+
.filter(it => crate.versions.indexOf(parseInt(it.versionId, 10)) !== -1);
163163

164164
return withMeta(this.serialize(versionDownloads), { extra_downloads: crate._extra_downloads });
165165
});
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import BaseSerializer from './application';
2+
3+
export default BaseSerializer.extend({
4+
getHashForResource() {
5+
let [hash, addToIncludes] = BaseSerializer.prototype.getHashForResource.apply(this, arguments);
6+
7+
if (Array.isArray(hash)) {
8+
for (let resource of hash) {
9+
this._adjust(resource);
10+
}
11+
} else {
12+
this._adjust(hash);
13+
}
14+
15+
return [hash, addToIncludes];
16+
},
17+
18+
_adjust(hash) {
19+
hash.version = hash.version_id;
20+
delete hash.version_id;
21+
},
22+
});

tests/mirage/crates-test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -586,9 +586,9 @@ module('Mirage | Keywords', function(hooks) {
586586
test('returns a list of version downloads belonging to the specified crate version', async function(assert) {
587587
this.server.create('crate', { name: 'rand' });
588588
let version = this.server.create('version', { crate: 'rand', num: '1.0.0' });
589-
this.server.create('version-download', { version: version.id, date: '2020-01-13' });
590-
this.server.create('version-download', { version: version.id, date: '2020-01-14' });
591-
this.server.create('version-download', { version: version.id, date: '2020-01-15' });
589+
this.server.create('version-download', { version, date: '2020-01-13' });
590+
this.server.create('version-download', { version, date: '2020-01-14' });
591+
this.server.create('version-download', { version, date: '2020-01-15' });
592592

593593
let response = await fetch('/api/v1/crates/rand/1.0.0/downloads');
594594
assert.equal(response.status, 200);
@@ -896,9 +896,9 @@ module('Mirage | Keywords', function(hooks) {
896896
test('returns a list of version downloads belonging to the specified crate version', async function(assert) {
897897
this.server.create('crate', { name: 'rand' });
898898
let versions = this.server.createList('version', 2, { crate: 'rand' });
899-
this.server.create('version-download', { version: versions[0].id, date: '2020-01-13' });
900-
this.server.create('version-download', { version: versions[1].id, date: '2020-01-14' });
901-
this.server.create('version-download', { version: versions[1].id, date: '2020-01-15' });
899+
this.server.create('version-download', { version: versions[0], date: '2020-01-13' });
900+
this.server.create('version-download', { version: versions[1], date: '2020-01-14' });
901+
this.server.create('version-download', { version: versions[1], date: '2020-01-15' });
902902

903903
let response = await fetch('/api/v1/crates/rand/downloads');
904904
assert.equal(response.status, 200);

0 commit comments

Comments
 (0)