Skip to content

Commit b393b1b

Browse files
author
pliljegr
committed
CHORE: Modernize integration/ tests and remove run loop calls
1 parent 2c2cfb9 commit b393b1b

7 files changed

+1067
-1162
lines changed

packages/-ember-data/tests/integration/application-test.js

+3-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import Namespace from '@ember/application/namespace';
22
import Service, { inject as service } from '@ember/service';
33
import Controller from '@ember/controller';
44
import Application from '@ember/application';
5-
import { run } from '@ember/runloop';
65
import Store from 'ember-data/store';
76
import { module, test } from 'qunit';
87
import { setupTest } from 'ember-qunit';
@@ -110,12 +109,6 @@ module('integration/application - Attaching initializer', function(hooks) {
110109
this.owner = null;
111110
});
112111

113-
hooks.afterEach(function() {
114-
if (this.application !== null) {
115-
run(this.application, 'destroy');
116-
}
117-
});
118-
119112
test('ember-data initializer is run', async function(assert) {
120113
let ran = false;
121114

@@ -129,7 +122,7 @@ module('integration/application - Attaching initializer', function(hooks) {
129122

130123
this.application = this.TestApplication.create({ autoboot: false });
131124

132-
await run(() => this.application.boot());
125+
await this.application.boot();
133126

134127
assert.ok(ran, 'ember-data initializer was found');
135128
});
@@ -149,9 +142,8 @@ module('integration/application - Attaching initializer', function(hooks) {
149142

150143
this.application = this.TestApplication.create({ autoboot: false });
151144

152-
await run(() =>
153-
this.application.boot().then(() => (this.owner = this.application.buildInstance()))
154-
);
145+
await this.application.boot();
146+
this.owner = this.application.buildInstance();
155147

156148
let store = this.owner.lookup('service:store');
157149
assert.ok(

packages/-ember-data/tests/integration/debug-adapter-test.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { setupTest } from 'ember-qunit';
22
import { A } from '@ember/array';
33
import { get } from '@ember/object';
4-
import { run } from '@ember/runloop';
54
import Model from '@ember-data/model';
65
import Adapter from '@ember-data/adapter';
76
import { module, test } from 'qunit';
@@ -176,7 +175,7 @@ module('integration/debug-adapter - DS.DebugAdapter', function(hooks) {
176175
addedRecords = updatedRecords = [];
177176
removedCount = removedIndex = null;
178177

179-
run(() => post.unloadRecord());
178+
post.unloadRecord();
180179

181180
await settled();
182181

Original file line numberDiff line numberDiff line change
@@ -1,68 +1,77 @@
1-
import { run } from '@ember/runloop';
2-
import setupStore from 'dummy/tests/helpers/store';
3-
1+
import { setupTest } from 'ember-qunit';
42
import testInDebug from 'dummy/tests/helpers/test-in-debug';
53
import { module, test } from 'qunit';
64

7-
import DS from 'ember-data';
8-
9-
let env, store, User, Job, ReflexiveModel;
10-
11-
const { attr, belongsTo } = DS;
5+
import Model from '@ember-data/model';
6+
import { attr, belongsTo } from '@ember-data/model';
127

138
function stringify(string) {
149
return function() {
1510
return string;
1611
};
1712
}
1813

14+
// @pete_the_pete refer to https://github.com/emberjs/data/commit/e34cb5a37391ce2e5d25401ca189a9bd19a29340
1915
module('integration/inverse_test - inverseFor', function(hooks) {
20-
hooks.beforeEach(function() {
21-
User = DS.Model.extend({
22-
name: attr('string'),
23-
bestFriend: belongsTo('user', { async: true, inverse: null }),
24-
job: belongsTo('job', { async: false }),
25-
});
26-
27-
User.toString = stringify('user');
28-
29-
Job = DS.Model.extend({
30-
isGood: attr(),
31-
user: belongsTo('user', { async: false }),
32-
});
33-
34-
Job.toString = stringify('job');
16+
setupTest(hooks);
17+
let store;
18+
let user;
19+
let job;
3520

36-
ReflexiveModel = DS.Model.extend({
37-
reflexiveProp: belongsTo('reflexive-model', { async: false }),
38-
});
39-
40-
ReflexiveModel.toString = stringify('reflexiveModel');
41-
42-
env = setupStore({
43-
user: User,
44-
job: Job,
45-
reflexiveModel: ReflexiveModel,
46-
});
47-
48-
store = env.store;
49-
50-
Job = store.modelFor('job');
51-
User = store.modelFor('user');
52-
ReflexiveModel = store.modelFor('reflexive-model');
53-
});
54-
55-
hooks.afterEach(function() {
56-
run(env.container, 'destroy');
21+
hooks.beforeEach(function() {
22+
let { owner } = this;
23+
class User extends Model {
24+
@attr()
25+
name;
26+
27+
@belongsTo('user', { async: true, inverse: null })
28+
bestFriend;
29+
30+
@belongsTo('job', { async: false })
31+
job;
32+
33+
toString() {
34+
return stringify('user');
35+
}
36+
}
37+
38+
class Job extends Model {
39+
@attr()
40+
isGood;
41+
42+
@belongsTo('user', { async: false })
43+
user;
44+
45+
toString() {
46+
return stringify('job');
47+
}
48+
}
49+
50+
class ReflexiveModel extends Model {
51+
@belongsTo('reflexive-model', { async: false })
52+
reflexiveProp;
53+
54+
toString() {
55+
return stringify('reflexiveModel');
56+
}
57+
}
58+
owner.register('model:user', User);
59+
owner.register('model:job', Job);
60+
owner.register('model:reflexive-model', ReflexiveModel);
61+
62+
store = owner.lookup('service:store');
63+
64+
job = store.modelFor('job');
65+
user = store.modelFor('user');
5766
});
5867

5968
test('Finds the inverse when there is only one possible available', function(assert) {
60-
let inverseDefinition = Job.inverseFor('user', store);
69+
let inverseDefinition = job.inverseFor('user', store);
6170

6271
assert.deepEqual(
6372
inverseDefinition,
6473
{
65-
type: User,
74+
type: user,
6675
name: 'job',
6776
kind: 'belongsTo',
6877
options: {
@@ -74,18 +83,18 @@ module('integration/inverse_test - inverseFor', function(hooks) {
7483
});
7584

7685
test('Finds the inverse when only one side has defined it manually', function(assert) {
77-
Job.reopen({
86+
job.reopen({
7887
owner: belongsTo('user', { inverse: 'previousJob', async: false }),
7988
});
8089

81-
User.reopen({
90+
user.reopen({
8291
previousJob: belongsTo('job', { async: false }),
8392
});
8493

8594
assert.deepEqual(
86-
Job.inverseFor('owner', store),
95+
job.inverseFor('owner', store),
8796
{
88-
type: User, //the model's type
97+
type: user, //the model's type
8998
name: 'previousJob', //the models relationship key
9099
kind: 'belongsTo',
91100
options: {
@@ -96,9 +105,9 @@ module('integration/inverse_test - inverseFor', function(hooks) {
96105
);
97106

98107
assert.deepEqual(
99-
User.inverseFor('previousJob', store),
108+
user.inverseFor('previousJob', store),
100109
{
101-
type: Job, //the model's type
110+
type: job, //the model's type
102111
name: 'owner', //the models relationship key
103112
kind: 'belongsTo',
104113
options: {
@@ -111,41 +120,41 @@ module('integration/inverse_test - inverseFor', function(hooks) {
111120
});
112121

113122
test('Returns null if inverse relationship it is manually set with a different relationship key', function(assert) {
114-
Job.reopen({
123+
job.reopen({
115124
user: belongsTo('user', { inverse: 'previousJob', async: false }),
116125
});
117126

118-
User.reopen({
127+
user.reopen({
119128
job: belongsTo('job', { async: false }),
120129
});
121130

122-
assert.equal(User.inverseFor('job', store), null, 'There is no inverse');
131+
assert.equal(user.inverseFor('job', store), null, 'There is no inverse');
123132
});
124133

125134
testInDebug('Errors out if you define 2 inverses to the same model', function(assert) {
126-
Job.reopen({
135+
job.reopen({
127136
user: belongsTo('user', { inverse: 'job', async: false }),
128137
owner: belongsTo('user', { inverse: 'job', async: false }),
129138
});
130139

131-
User.reopen({
140+
user.reopen({
132141
job: belongsTo('job', { async: false }),
133142
});
134143

135144
assert.expectAssertion(() => {
136-
User.inverseFor('job', store);
137-
}, /You defined the 'job' relationship on user, but you defined the inverse relationships of type job multiple times/i);
145+
user.inverseFor('job', store);
146+
}, /Assertion Failed: You defined the 'job' relationship on model:user, but you defined the inverse relationships of type model:job multiple times/i);
138147
});
139148

140149
test('Caches findInverseFor return value', function(assert) {
141150
assert.expect(1);
142151

143-
var inverseForUser = Job.inverseFor('user', store);
144-
Job.findInverseFor = function() {
152+
let inverseForUser = job.inverseFor('user', store);
153+
job.findInverseFor = function() {
145154
assert.ok(false, 'Find is not called anymore');
146155
};
147156

148-
assert.equal(inverseForUser, Job.inverseFor('user', store), 'Inverse cached succesfully');
157+
assert.equal(inverseForUser, job.inverseFor('user', store), 'Inverse cached succesfully');
149158
});
150159

151160
testInDebug('Errors out if you do not define an inverse for a reflexive relationship', function(
@@ -154,16 +163,14 @@ module('integration/inverse_test - inverseFor', function(hooks) {
154163
//Maybe store is evaluated lazily, so we need this :(
155164
assert.expectWarning(() => {
156165
var reflexiveModel;
157-
run(() => {
158-
store.push({
159-
data: {
160-
type: 'reflexive-model',
161-
id: '1',
162-
},
163-
});
164-
reflexiveModel = store.peekRecord('reflexive-model', 1);
165-
reflexiveModel.get('reflexiveProp');
166+
store.push({
167+
data: {
168+
type: 'reflexive-model',
169+
id: '1',
170+
},
166171
});
172+
reflexiveModel = store.peekRecord('reflexive-model', 1);
173+
reflexiveModel.get('reflexiveProp');
167174
}, /Detected a reflexive relationship by the name of 'reflexiveProp'/);
168175
});
169176
});
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
import { resolve } from 'rsvp';
2-
import { run } from '@ember/runloop';
2+
import { setupTest } from 'ember-qunit';
33
import { deprecatedTest } from 'dummy/tests/helpers/deprecated-test';
4-
import setupStore from 'dummy/tests/helpers/store';
4+
import Model from '@ember-data/model';
5+
import { attr } from '@ember-data/model';
56

67
import { module } from 'qunit';
78

8-
import DS from 'ember-data';
9-
10-
let Person, env;
11-
const { attr } = DS;
12-
139
module('integration/lifecycle_hooks - Lifecycle Hooks', function(hooks) {
10+
setupTest(hooks);
11+
let store;
12+
let adapter;
1413
hooks.beforeEach(function() {
15-
Person = DS.Model.extend({
16-
name: attr('string'),
17-
});
18-
19-
env = setupStore({
20-
person: Person,
21-
});
22-
});
14+
let { owner } = this;
15+
class Person extends Model {
16+
@attr()
17+
name;
18+
}
2319

24-
hooks.afterEach(function() {
25-
run(env.container, 'destroy');
20+
owner.register('model:person', Person);
21+
store = owner.lookup('service:store');
22+
adapter = store.adapterFor('application');
2623
});
2724

2825
deprecatedTest(
@@ -31,15 +28,15 @@ module('integration/lifecycle_hooks - Lifecycle Hooks', function(hooks) {
3128
id: 'ember-data:evented-api-usage',
3229
until: '4.0',
3330
},
34-
function(assert) {
31+
async function(assert) {
3532
let done = assert.async();
3633
assert.expect(3);
3734

38-
env.adapter.createRecord = function(store, type, snapshot) {
35+
adapter.createRecord = function(store, type, snapshot) {
3936
return resolve({ data: { id: 99, type: 'person', attributes: { name: 'Yehuda Katz' } } });
4037
};
4138

42-
let person = env.store.createRecord('person', { name: 'Yehuda Katz' });
39+
let person = store.createRecord('person', { name: 'Yehuda Katz' });
4340

4441
person.on('didCreate', function() {
4542
assert.equal(this, person, 'this is bound to the record');
@@ -48,7 +45,7 @@ module('integration/lifecycle_hooks - Lifecycle Hooks', function(hooks) {
4845
done();
4946
});
5047

51-
run(person, 'save');
48+
await person.save();
5249
}
5350
);
5451

@@ -58,22 +55,22 @@ module('integration/lifecycle_hooks - Lifecycle Hooks', function(hooks) {
5855
id: 'ember-data:evented-api-usage',
5956
until: '4.0',
6057
},
61-
function(assert) {
58+
async function(assert) {
6259
assert.expect(3);
6360

64-
env.adapter.createRecord = function(store, type, snapshot) {
61+
adapter.createRecord = function(store, type, snapshot) {
6562
return resolve();
6663
};
6764

68-
let person = env.store.createRecord('person', { id: 99, name: 'Yehuda Katz' });
65+
let person = store.createRecord('person', { id: 99, name: 'Yehuda Katz' });
6966

7067
person.on('didCreate', function() {
7168
assert.equal(this, person, 'this is bound to the record');
7269
assert.equal(this.get('id'), '99', 'the ID has been assigned');
7370
assert.equal(this.get('name'), 'Yehuda Katz', 'the attribute has been assigned');
7471
});
7572

76-
run(person, 'save');
73+
await person.save();
7774
}
7875
);
7976
});

0 commit comments

Comments
 (0)