Skip to content

Commit 06073d0

Browse files
author
Robert Jackson
committed
Avoid transforming this.subject when custom this.subject is present.
1 parent 0d7de17 commit 06073d0

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

ember-qunit-codemod.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ module.exports = function(file, api, options) {
104104
function parseModule(p) {
105105
let calleeName = p.node.expression.callee.name;
106106
// Find the moduleName and the module's options
107-
let moduleName, subject, options;
107+
let moduleName, subject, options, hasCustomSubject;
108108
let calleeArguments = p.node.expression.arguments.slice();
109109
let lastArgument = calleeArguments[calleeArguments.length - 1];
110110
if (lastArgument.type === 'ObjectExpression') {
@@ -127,9 +127,11 @@ module.exports = function(file, api, options) {
127127
} else if (!hasIntegration) {
128128
subject = calleeArguments[0];
129129
}
130+
131+
hasCustomSubject = options.properties.some(p => p.key.name === 'subject');
130132
}
131133

132-
return [moduleName, options, setupIdentifier, subject];
134+
return [moduleName, options, setupIdentifier, subject, hasCustomSubject];
133135
}
134136

135137
function updateModuleForToNestedModule() {
@@ -155,7 +157,7 @@ module.exports = function(file, api, options) {
155157
}
156158

157159
function createModule(p) {
158-
let [moduleName, options, setupType, subject] = parseModule(p);
160+
let [moduleName, options, setupType, subject, hasCustomSubject] = parseModule(p);
159161

160162
// Create the new `module(moduleName, function(hooks) {});` invocation
161163
let callback = j.functionExpression(
@@ -186,7 +188,7 @@ module.exports = function(file, api, options) {
186188
});
187189
}
188190

189-
return [moduleInvocation, callback.body.body, setupType, subject];
191+
return [moduleInvocation, callback.body.body, setupType, subject, hasCustomSubject];
190192
}
191193

192194
function processRenderingTest(testExpression) {
@@ -301,7 +303,7 @@ module.exports = function(file, api, options) {
301303
let bodyPath = programPath.get('body');
302304

303305
let bodyReplacement = [];
304-
let currentModuleCallbackBody, currentTestType, currentSubject;
306+
let currentModuleCallbackBody, currentTestType, currentSubject, currentHasCustomSubject;
305307
bodyPath.each(expressionPath => {
306308
let expression = expressionPath.node;
307309
if (isModuleDefinition(expressionPath)) {
@@ -310,12 +312,13 @@ module.exports = function(file, api, options) {
310312
currentModuleCallbackBody = result[1];
311313
currentTestType = result[2];
312314
currentSubject = result[3];
315+
currentHasCustomSubject = result[4];
313316
} else if (currentModuleCallbackBody) {
314317
currentModuleCallbackBody.push(expression);
315318

316319
if (currentTestType === 'setupRenderingTest') {
317320
processRenderingTest(expression);
318-
} else if (currentTestType === 'setupTest') {
321+
} else if (currentTestType === 'setupTest' && !currentHasCustomSubject) {
319322
processSubject(expression, currentSubject);
320323
}
321324
} else {

0 commit comments

Comments
 (0)