Skip to content

Commit 004e03e

Browse files
authored
Merge pull request #20 from rwjblue/module-for-model
Fix `this.subject()` usage within `moduleForModel`.
2 parents 316ea5e + e8be514 commit 004e03e

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

__testfixtures__/ember-qunit-codemod/subject.output.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,27 @@ module('Unit | Model | Foo', function(hooks) {
2121
setupTest(hooks);
2222

2323
test('has some thing', function (assert) {
24-
let subject = this.owner.factoryFor('model:foo').create();
24+
let subject = this.owner.lookup('service:store').createRecord('foo');
2525
});
2626

2727
test('has another thing', function (assert) {
28-
let subject = this.owner.factoryFor('model:foo').create({ size: 'big' });
28+
let subject = this.owner.lookup('service:store').createRecord('foo', { size: 'big' });
2929
});
3030
});
3131

3232
module('Integration | Model | Foo', function(hooks) {
3333
setupTest(hooks);
3434

3535
test('has some thing', function (assert) {
36-
let subject = this.owner.factoryFor('model:foo').create();
36+
let subject = this.owner.lookup('service:store').createRecord('foo');
3737
});
3838
});
3939

4040
module('Unit | Model | Foo', function(hooks) {
4141
setupTest(hooks);
4242

4343
test('has some thing', function (assert) {
44-
let subject = this.owner.factoryFor('model:foo').create();
44+
let subject = this.owner.lookup('service:store').createRecord('foo');
4545
});
4646
});
4747

ember-qunit-codemod.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ module.exports = function(file, api, options) {
246246

247247
thisDotSubjectUsage.forEach(p => {
248248
let options = p.node.arguments[0];
249-
let subjectType = subject.value.split(':')[0];
249+
let [subjectType, subjectName] = subject.value.split(':');
250250
let isSingletonSubject = !['model', 'component'].includes(subjectType);
251251

252252
// if we don't have `options` and the type is a singleton type
@@ -261,6 +261,22 @@ module.exports = function(file, api, options) {
261261
[subject]
262262
)
263263
);
264+
} else if (subjectType === 'model') {
265+
p.replace(
266+
j.callExpression(
267+
j.memberExpression(
268+
j.callExpression(
269+
j.memberExpression(
270+
j.memberExpression(j.thisExpression(), j.identifier('owner')),
271+
j.identifier('lookup')
272+
),
273+
[j.literal('service:store')]
274+
),
275+
j.identifier('createRecord')
276+
),
277+
[j.literal(subjectName), options].filter(Boolean)
278+
)
279+
);
264280
} else {
265281
p.replace(
266282
j.callExpression(

0 commit comments

Comments
 (0)