@@ -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