blob: 2186899dae8f8ee6bc36ade98b51cc487ff6e154 [file] [log] [blame]
'use strict'
/**
* @fileoverview Discourage having expect in setup and teardown functions
* @author Alexander Afanasyev
*/
var buildName = require('../helpers/buildName')
module.exports = function (context) {
var allowed = context.options.length ? context.options : ['expect()', 'expectAsync()']
var setupRegexp = /^(before|after)(Each|All)$/
var insideSetup = false
var setupFunctionName
return {
CallExpression: function (node) {
if (setupRegexp.test(node.callee.name)) {
insideSetup = true
setupFunctionName = node.callee.name
return
}
if (insideSetup) {
var functionName = buildName(node)
if (allowed.indexOf(functionName) > -1) {
context.report({
data: { functionName, setupFunctionName },
message: 'Unexpected "{{functionName}}" call in "{{setupFunctionName}}()"',
node
})
}
}
},
'CallExpression:exit': function (node) {
if (setupRegexp.test(node.callee.name)) {
insideSetup = false
setupFunctionName = undefined
}
}
}
}