diff --git a/src/rules/no-hooks.js b/src/rules/no-hooks.js index 06a0c2214..f73f7af86 100644 --- a/src/rules/no-hooks.js +++ b/src/rules/no-hooks.js @@ -1,6 +1,6 @@ 'use strict'; -const { getDocsUrl } = require('./util'); +const { getDocsUrl, isHook } = require('./util'); module.exports = { meta: { @@ -24,13 +24,6 @@ module.exports = { }, ], create(context) { - const testHookNames = Object.assign(Object.create(null), { - beforeAll: true, - beforeEach: true, - afterAll: true, - afterEach: true, - }); - const whitelistedHookNames = ( context.options[0] || { allow: [] } ).allow.reduce((hashMap, value) => { @@ -38,7 +31,6 @@ module.exports = { return hashMap; }, Object.create(null)); - const isHook = node => testHookNames[node.callee.name]; const isWhitelisted = node => whitelistedHookNames[node.callee.name]; return { diff --git a/src/rules/util.js b/src/rules/util.js index b067abfd5..9259b1ec5 100644 --- a/src/rules/util.js +++ b/src/rules/util.js @@ -99,6 +99,13 @@ const testCaseNames = Object.assign(Object.create(null), { xtest: true, }); +const testHookNames = Object.assign(Object.create(null), { + beforeAll: true, + beforeEach: true, + afterAll: true, + afterEach: true, +}); + const getNodeName = node => { function joinNames(a, b) { return a && b ? `${a}.${b}` : null; @@ -119,6 +126,11 @@ const getNodeName = node => { return null; }; +const isHook = node => + node && + node.type === 'CallExpression' && + testHookNames[getNodeName(node.callee)]; + const isTestCase = node => node && node.type === 'CallExpression' && @@ -224,6 +236,7 @@ module.exports = { getStringValue, isDescribe, isFunction, + isHook, isTemplateLiteral, isTestCase, isString,