From cbdbcef47984eb01509493bd5b2423f518a2663d Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Sun, 11 Apr 2021 10:51:47 +1200 Subject: [PATCH] fix(valid-describe): support using `each` with modifiers (#820) --- src/rules/__tests__/valid-describe.test.ts | 26 +++++++++++++--------- src/rules/utils.ts | 15 ------------- src/rules/valid-describe.ts | 4 ++-- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/rules/__tests__/valid-describe.test.ts b/src/rules/__tests__/valid-describe.test.ts index b8781d876..011d70167 100644 --- a/src/rules/__tests__/valid-describe.test.ts +++ b/src/rules/__tests__/valid-describe.test.ts @@ -12,11 +12,6 @@ const ruleTester = new TSESLint.RuleTester({ ruleTester.run('valid-describe', rule, { valid: [ - 'describe["each"]()()', - 'describe["each"](() => {})()', - 'describe["each"](() => {})("foo")', - 'describe["each"]()(() => {})', - 'describe["each"]("foo")(() => {})', 'describe.each([1, 2, 3])("%s", (a, b) => {});', 'describe("foo", function() {})', 'describe("foo", () => {})', @@ -51,11 +46,10 @@ ruleTester.run('valid-describe', rule, { } `, dedent` - describe.each\` - something | other - ${1} | ${2} | - \` - ("$something", ({ something, other }) => { }); + describe.each\` + foo | foe + ${1} | ${2} + \`('$something', ({ foo, foe }) => {}); `, ], invalid: [ @@ -63,6 +57,10 @@ ruleTester.run('valid-describe', rule, { code: 'describe.each()()', errors: [{ messageId: 'nameAndCallback', line: 1, column: 1 }], }, + { + code: 'describe["each"]()()', + errors: [{ messageId: 'nameAndCallback', line: 1, column: 1 }], + }, { code: 'describe.each(() => {})()', errors: [{ messageId: 'nameAndCallback', line: 1, column: 1 }], @@ -75,10 +73,18 @@ ruleTester.run('valid-describe', rule, { code: 'describe.each()(() => {})', errors: [{ messageId: 'nameAndCallback', line: 1, column: 17 }], }, + { + code: 'describe["each"]()(() => {})', + errors: [{ messageId: 'nameAndCallback', line: 1, column: 20 }], + }, { code: 'describe.each("foo")(() => {})', errors: [{ messageId: 'nameAndCallback', line: 1, column: 22 }], }, + { + code: 'describe.only.each("foo")(() => {})', + errors: [{ messageId: 'nameAndCallback', line: 1, column: 27 }], + }, { code: 'describe(() => {})', errors: [{ messageId: 'nameAndCallback', line: 1, column: 10 }], diff --git a/src/rules/utils.ts b/src/rules/utils.ts index b2c904cdf..efe6e34cf 100644 --- a/src/rules/utils.ts +++ b/src/rules/utils.ts @@ -763,21 +763,6 @@ export const isDescribeCall = ( return false; }; -export const isDescribe = ( - node: TSESTree.CallExpression, -): node is JestFunctionCallExpression => - (node.callee.type === AST_NODE_TYPES.Identifier && - DescribeAlias.hasOwnProperty(node.callee.name)) || - (node.callee.type === AST_NODE_TYPES.MemberExpression && - node.callee.object.type === AST_NODE_TYPES.Identifier && - DescribeAlias.hasOwnProperty(node.callee.object.name) && - node.callee.property.type === AST_NODE_TYPES.Identifier && - DescribeProperty.hasOwnProperty(node.callee.property.name)) || - (node.callee.type === AST_NODE_TYPES.TaggedTemplateExpression && - node.callee.tag.type === AST_NODE_TYPES.MemberExpression && - node.callee.tag.object.type === AST_NODE_TYPES.Identifier && - DescribeAlias.hasOwnProperty(node.callee.tag.object.name)); - /** * Checks if the given node` is a call to `.each(...)()`. * If `true`, the code must look like `.each(...)()`. diff --git a/src/rules/valid-describe.ts b/src/rules/valid-describe.ts index e07c98666..255f94a12 100644 --- a/src/rules/valid-describe.ts +++ b/src/rules/valid-describe.ts @@ -5,7 +5,7 @@ import { import { createRule, getJestFunctionArguments, - isDescribe, + isDescribeCall, isEachCall, isFunction, } from './utils'; @@ -46,7 +46,7 @@ export default createRule({ return { CallExpression(node) { if ( - !isDescribe(node) || + !isDescribeCall(node) || node.callee.type === AST_NODE_TYPES.TaggedTemplateExpression ) { return;