Skip to content

Commit d766a4f

Browse files
committed
mirage/dependency: Replace crate and version properties with relationships
1 parent 447113c commit d766a4f

File tree

7 files changed

+76
-31
lines changed

7 files changed

+76
-31
lines changed

mirage/factories/dependency.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@ import { Factory } from 'ember-cli-mirage';
33
const REQS = ['^0.1.0', '^2.1.3', '0.3.7', '~5.2.12'];
44

55
export default Factory.extend({
6-
// crate_id,
7-
// version_id,
8-
96
default_features: i => i % 4 === 3,
107
features: () => [],
118
kind: i => (i % 3 === 0 ? 'dev' : 'normal'),
129
optional: i => i % 4 !== 3,
1310
req: i => REQS[i % REQS.length],
1411
target: null,
12+
13+
afterCreate(self) {
14+
if (!self.crateId) {
15+
throw new Error(`Missing \`crate\` relationship on \`dependency:${self.id}\``);
16+
}
17+
if (!self.versionId) {
18+
throw new Error(`Missing \`version\` relationship on \`dependency:${self.id}\``);
19+
}
20+
},
1521
});

mirage/fixtures/crates.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,4 +395,36 @@ export default [
395395
updated_at: '2015-11-22T22:00:41Z',
396396
versions: null,
397397
},
398+
{
399+
id: 'libc',
400+
name: 'libc',
401+
max_version: '1.0.1',
402+
newest_version: '1.0.1',
403+
downloads: 5169,
404+
recent_downloads: 69,
405+
},
406+
{
407+
id: 'nanomsg-sys',
408+
name: 'nanomsg-sys',
409+
max_version: '1.0.1',
410+
newest_version: '1.0.1',
411+
downloads: 5169,
412+
recent_downloads: 69,
413+
},
414+
{
415+
id: 'mock-build-deps',
416+
name: 'mock-build-deps',
417+
max_version: '1.0.1',
418+
newest_version: '1.0.1',
419+
downloads: 5169,
420+
recent_downloads: 69,
421+
},
422+
{
423+
id: 'mock-dev-deps',
424+
name: 'mock-dev-deps',
425+
max_version: '1.0.1',
426+
newest_version: '1.0.1',
427+
downloads: 5169,
428+
recent_downloads: 69,
429+
},
398430
];

mirage/fixtures/dependencies.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
export default [
22
{
3-
crate_id: 'libc',
3+
crateId: 'libc',
44
default_features: true,
55
features: '',
66
id: 146231,
77
kind: 'normal',
88
optional: false,
99
req: '^0.2.18',
1010
target: null,
11-
version_id: 40905,
11+
versionId: 40905,
1212
},
1313
{
14-
crate_id: 'nanomsg-sys',
14+
crateId: 'nanomsg-sys',
1515
default_features: true,
1616
features: '',
1717
id: 146232,
1818
kind: 'normal',
1919
optional: false,
2020
req: '^0.6.1',
2121
target: null,
22-
version_id: 40905,
22+
versionId: 40905,
2323
},
2424
{
25-
crate_id: 'nanomsg',
25+
crateId: 'nanomsg',
2626
default_features: true,
2727
features: '',
2828
id: 146233,
2929
kind: 'normal',
3030
optional: false,
3131
req: '^0.5.0',
3232
target: null,
33-
version_id: 28674,
33+
versionId: 28674,
3434
},
3535
{
36-
crate_id: 'mock-build-deps',
36+
crateId: 'mock-build-deps',
3737
default_features: true,
3838
features: '',
3939
id: 146234,
4040
kind: 'build',
4141
optional: false,
4242
req: '^0.6.1',
4343
target: null,
44-
version_id: 40905,
44+
versionId: 40905,
4545
},
4646
{
47-
crate_id: 'mock-dev-deps',
47+
crateId: 'mock-dev-deps',
4848
default_features: true,
4949
features: '',
5050
id: 146235,
5151
kind: 'dev',
5252
optional: true,
5353
req: '^0.6.1',
5454
target: null,
55-
version_id: 40905,
55+
versionId: 40905,
5656
},
5757
];

mirage/models/dependency.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
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+
crate: belongsTo(),
5+
version: belongsTo(),
6+
});

mirage/route-handlers/crates.js

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

88-
return schema.dependencies.where({ version_id: version.id });
88+
return schema.dependencies.where({ versionId: version.id });
8989
});
9090

9191
server.get('/api/v1/crates/:crate_id/:version_num/downloads', function(schema, request) {
@@ -139,11 +139,11 @@ export function register(server) {
139139

140140
let { start, end } = pageParams(request);
141141

142-
let allDependencies = schema.dependencies.where({ crate_id: crateId });
142+
let allDependencies = schema.dependencies.where({ crateId: crateId });
143143
let dependencies = allDependencies.slice(start, end);
144144
let total = allDependencies.length;
145145

146-
let versions = schema.versions.find(dependencies.models.map(it => it.version_id));
146+
let versions = schema.versions.find(dependencies.models.map(it => it.versionId));
147147

148148
return {
149149
...this.serialize(dependencies),

tests/acceptance/front-page-test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ module('Acceptance | front page', function(hooks) {
3232
assert.dom('[data-test-all-crates-link]').exists();
3333
assert.dom('[data-test-login-link]').exists();
3434

35-
assert.dom('[data-test-total-downloads]').hasText('122,669');
36-
assert.dom('[data-test-total-crates]').hasText('19');
35+
assert.dom('[data-test-total-downloads]').hasText('143,345');
36+
assert.dom('[data-test-total-crates]').hasText('23');
3737

3838
assert.dom('[data-test-new-crates] [data-test-crate-link="0"]').hasText('Inflector (0.1.6)');
3939
assert.dom('[data-test-new-crates] [data-test-crate-link="0"]').hasAttribute('href', '/crates/Inflector/0.1.6');

tests/mirage/crates-test.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -501,9 +501,13 @@ module('Mirage | Keywords', function(hooks) {
501501
test('returns a list of dependencies belonging to the specified crate version', async function(assert) {
502502
this.server.create('crate', { name: 'rand' });
503503
let version = this.server.create('version', { crateId: 'rand', num: '1.0.0' });
504-
this.server.create('dependency', { crate_id: 'foo', version_id: version.id });
505-
this.server.create('dependency', { crate_id: 'bar', version_id: version.id });
506-
this.server.create('dependency', { crate_id: 'baz', version_id: version.id });
504+
505+
this.server.create('crate', { name: 'foo' });
506+
this.server.create('dependency', { crateId: 'foo', versionId: version.id });
507+
this.server.create('crate', { name: 'bar' });
508+
this.server.create('dependency', { crateId: 'bar', versionId: version.id });
509+
this.server.create('crate', { name: 'baz' });
510+
this.server.create('dependency', { crateId: 'baz', versionId: version.id });
507511

508512
let response = await fetch('/api/v1/crates/rand/1.0.0/dependencies');
509513
assert.equal(response.status, 200);
@@ -733,15 +737,15 @@ module('Mirage | Keywords', function(hooks) {
733737
this.server.create('crate', { name: 'foo' });
734738

735739
this.server.create('dependency', {
736-
crate_id: 'foo',
737-
version_id: this.server.create('version', {
740+
crateId: 'foo',
741+
versionId: this.server.create('version', {
738742
crate: this.server.create('crate', { name: 'bar' }),
739743
}).id,
740744
});
741745

742746
this.server.create('dependency', {
743-
crate_id: 'foo',
744-
version_id: this.server.create('version', {
747+
crateId: 'foo',
748+
versionId: this.server.create('version', {
745749
crate: this.server.create('crate', { name: 'baz' }),
746750
}).id,
747751
});
@@ -821,8 +825,8 @@ module('Mirage | Keywords', function(hooks) {
821825
this.server.create('crate', { name: 'foo' });
822826

823827
this.server.createList('dependency', 25, {
824-
crate_id: 'foo',
825-
version_id: () =>
828+
crateId: 'foo',
829+
versionId: () =>
826830
this.server.create('version', {
827831
crate: () => this.server.create('crate', { name: 'bar' }),
828832
}).id,
@@ -847,8 +851,8 @@ module('Mirage | Keywords', function(hooks) {
847851
crate: i => crates[i],
848852
});
849853
this.server.createList('dependency', versions.length, {
850-
crate_id: 'foo',
851-
version_id: i => versions[i].id,
854+
crateId: 'foo',
855+
versionId: i => versions[i].id,
852856
});
853857

854858
let response = await fetch('/api/v1/crates/foo/reverse_dependencies?page=2&per_page=5');

0 commit comments

Comments
 (0)