Skip to content

Commit 5b1e23c

Browse files
committed
Auto merge of #2127 - Turbo87:faker, r=locks
mirage/factories: Use predictable values instead of random fake values This generally is easier to work with in my experience. If we want random values we can still generate them on a case-by-case basis, but by default we will have somewhat stable test fixtures now. This should unblock #2120 :) r? @locks
2 parents a4143d8 + 3929db1 commit 5b1e23c

File tree

7 files changed

+40
-53
lines changed

7 files changed

+40
-53
lines changed

mirage/factories/category.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import { Factory } from 'ember-cli-mirage';
2-
import faker from 'faker';
32
import { dasherize } from '@ember/string';
43

54
export default Factory.extend({
6-
category(i) {
7-
return `Category ${i}`;
5+
category: i => `Category ${i}`,
6+
7+
slug() {
8+
return dasherize(this.category);
89
},
910

1011
id() {
11-
return dasherize(this.category);
12+
return this.slug;
1213
},
1314

14-
slug() {
15-
return dasherize(this.category);
15+
description() {
16+
return `This is the description for the category called "${this.category}"`;
1617
},
1718

18-
description: () => faker.lorem.sentence(),
19-
created_at: () => faker.date.past(),
20-
crates_cnt: () => faker.random.number({ max: 5000 }),
19+
created_at: '2010-06-16T21:30:45Z',
20+
crates_cnt: 0,
2121
});

mirage/factories/crate.js

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
import { Factory } from 'ember-cli-mirage';
2-
import faker from 'faker';
32

43
export default Factory.extend({
5-
id(i) {
6-
return `crate-${i}`;
4+
name: i => `crate-${i}`,
5+
6+
id() {
7+
return this.name;
78
},
89

9-
name() {
10-
return this.id;
10+
description() {
11+
return `This is the description for the crate called "${this.name}"`;
1112
},
1213

13-
description: () => faker.lorem.sentence(),
14-
downloads: () => faker.random.number({ max: 10000 }),
15-
documentation: () => faker.internet.url(),
16-
homepage: () => faker.internet.url(),
17-
repository: () => faker.internet.url(),
18-
max_version: () => faker.system.semver(),
19-
newest_version: () => faker.system.semver(),
14+
downloads: i => (((i + 13) * 42) % 13) * 12345,
2015

21-
created_at: () => faker.date.past(),
22-
updated_at() {
23-
return faker.date.between(this.created_at, new Date());
24-
},
16+
documentation: null,
17+
homepage: null,
18+
repository: null,
19+
max_version: '1.0.0',
20+
newest_version: '1.0.0',
21+
22+
created_at: '2010-06-16T21:30:45Z',
23+
updated_at: '2017-02-24T12:34:56Z',
2524

2625
badges: () => [],
2726
categories: () => [],

mirage/factories/version.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,29 @@
11
import { Factory } from 'ember-cli-mirage';
2-
import faker from 'faker';
32

4-
export default Factory.extend({
5-
id: i => i,
6-
7-
// crate: '...',
3+
const LICENSES = ['MIT/Apache-2.0', 'MIT', 'Apache-2.0'];
84

9-
num: () => faker.system.semver(),
5+
export default Factory.extend({
6+
num: i => `1.0.${i}`,
107

11-
created_at: () => faker.date.past(),
12-
updated_at() {
13-
return faker.date.between(this.created_at, new Date());
14-
},
8+
created_at: '2010-06-16T21:30:45Z',
9+
updated_at: '2017-02-24T12:34:56Z',
1510

1611
yanked: false,
17-
license: () => faker.hacker.abbreviation(),
12+
license: i => LICENSES[i % LICENSES.length],
1813

1914
dl_path() {
2015
return `/api/v1/crates/${this.crate}/${this.num}/download`;
2116
},
2217

23-
downloads: () => faker.random.number({ max: 10000 }),
18+
downloads: i => (((i + 13) * 42) % 13) * 1234,
19+
2420
features: () => {},
2521
_authors: () => [],
2622

23+
crate_size: i => (((i + 13) * 42) % 13) * 54321,
24+
2725
afterCreate(version, server) {
2826
let crate = server.schema.crates.find(version.crate);
2927
crate.update({ versions: crate.versions.concat(parseInt(version.id, 10)) });
3028
},
31-
crate_size: () => faker.random.number({ max: 10000000 }),
3229
});

package-lock.json

Lines changed: 0 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
"eslint-config-prettier": "^6.9.0",
8282
"eslint-plugin-ember": "^7.7.2",
8383
"eslint-plugin-prettier": "^3.1.2",
84-
"faker": "^4.1.0",
8584
"loader.js": "^4.7.0",
8685
"normalize.css": "^8.0.1",
8786
"nyc": "^15.0.0",

tests/acceptance/crate-test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module('Acceptance | crate page', function(hooks) {
1515
test('/crates/:crate is accessible', async function(assert) {
1616
assert.expect(0);
1717

18-
this.server.create('crate', { id: 'nanomsg', max_version: '0.6.1' });
18+
this.server.create('crate', { name: 'nanomsg', max_version: '0.6.1' });
1919
this.server.create('version', { crate: 'nanomsg', num: '0.6.0' });
2020
this.server.create('version', { crate: 'nanomsg', num: '0.6.1' });
2121

@@ -28,7 +28,7 @@ module('Acceptance | crate page', function(hooks) {
2828
test('/crates/:crate/:version is accessible', async function(assert) {
2929
assert.expect(0);
3030

31-
this.server.create('crate', { id: 'nanomsg', max_version: '0.6.1' });
31+
this.server.create('crate', { name: 'nanomsg', max_version: '0.6.1' });
3232
this.server.create('version', { crate: 'nanomsg', num: '0.6.0' });
3333
this.server.create('version', { crate: 'nanomsg', num: '0.6.1' });
3434

@@ -50,7 +50,7 @@ module('Acceptance | crate page', function(hooks) {
5050
});
5151

5252
test('visiting a crate page from the front page', async function(assert) {
53-
this.server.create('crate', { id: 'nanomsg', newest_version: '0.6.1' });
53+
this.server.create('crate', { name: 'nanomsg', newest_version: '0.6.1' });
5454
this.server.create('version', { crate: 'nanomsg', num: '0.6.1' });
5555

5656
await visit('/');
@@ -64,7 +64,7 @@ module('Acceptance | crate page', function(hooks) {
6464
});
6565

6666
test('visiting /crates/nanomsg', async function(assert) {
67-
this.server.create('crate', { id: 'nanomsg', max_version: '0.6.1' });
67+
this.server.create('crate', { name: 'nanomsg', max_version: '0.6.1' });
6868
this.server.create('version', { crate: 'nanomsg', num: '0.6.0' });
6969
this.server.create('version', { crate: 'nanomsg', num: '0.6.1' });
7070

@@ -79,7 +79,7 @@ module('Acceptance | crate page', function(hooks) {
7979
});
8080

8181
test('visiting /crates/nanomsg/', async function(assert) {
82-
this.server.create('crate', { id: 'nanomsg', max_version: '0.6.1' });
82+
this.server.create('crate', { name: 'nanomsg', max_version: '0.6.1' });
8383
this.server.create('version', { crate: 'nanomsg', num: '0.6.0' });
8484
this.server.create('version', { crate: 'nanomsg', num: '0.6.1' });
8585

@@ -94,7 +94,7 @@ module('Acceptance | crate page', function(hooks) {
9494
});
9595

9696
test('visiting /crates/nanomsg/0.6.0', async function(assert) {
97-
this.server.create('crate', { id: 'nanomsg', max_version: '0.6.1' });
97+
this.server.create('crate', { name: 'nanomsg', max_version: '0.6.1' });
9898
this.server.create('version', { crate: 'nanomsg', num: '0.6.0' });
9999
this.server.create('version', { crate: 'nanomsg', num: '0.6.1' });
100100

tests/helpers/setup-mirage.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
2-
import faker from 'faker';
32
import timekeeper from 'timekeeper';
43

54
export default function(hooks) {
65
setupMirage(hooks);
76

87
// To have deterministic visual tests, the seed has to be constant
98
hooks.beforeEach(function() {
10-
faker.seed(12345);
119
timekeeper.freeze(new Date('11/20/2017 12:00'));
1210
});
1311

0 commit comments

Comments
 (0)