Skip to content

Commit cbdbcef

Browse files
authored
fix(valid-describe): support using each with modifiers (#820)
1 parent ce76579 commit cbdbcef

File tree

3 files changed

+18
-27
lines changed

3 files changed

+18
-27
lines changed

src/rules/__tests__/valid-describe.test.ts

+16-10
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@ const ruleTester = new TSESLint.RuleTester({
1212

1313
ruleTester.run('valid-describe', rule, {
1414
valid: [
15-
'describe["each"]()()',
16-
'describe["each"](() => {})()',
17-
'describe["each"](() => {})("foo")',
18-
'describe["each"]()(() => {})',
19-
'describe["each"]("foo")(() => {})',
2015
'describe.each([1, 2, 3])("%s", (a, b) => {});',
2116
'describe("foo", function() {})',
2217
'describe("foo", () => {})',
@@ -51,18 +46,21 @@ ruleTester.run('valid-describe', rule, {
5146
}
5247
`,
5348
dedent`
54-
describe.each\`
55-
something | other
56-
${1} | ${2} |
57-
\`
58-
("$something", ({ something, other }) => { });
49+
describe.each\`
50+
foo | foe
51+
${1} | ${2}
52+
\`('$something', ({ foo, foe }) => {});
5953
`,
6054
],
6155
invalid: [
6256
{
6357
code: 'describe.each()()',
6458
errors: [{ messageId: 'nameAndCallback', line: 1, column: 1 }],
6559
},
60+
{
61+
code: 'describe["each"]()()',
62+
errors: [{ messageId: 'nameAndCallback', line: 1, column: 1 }],
63+
},
6664
{
6765
code: 'describe.each(() => {})()',
6866
errors: [{ messageId: 'nameAndCallback', line: 1, column: 1 }],
@@ -75,10 +73,18 @@ ruleTester.run('valid-describe', rule, {
7573
code: 'describe.each()(() => {})',
7674
errors: [{ messageId: 'nameAndCallback', line: 1, column: 17 }],
7775
},
76+
{
77+
code: 'describe["each"]()(() => {})',
78+
errors: [{ messageId: 'nameAndCallback', line: 1, column: 20 }],
79+
},
7880
{
7981
code: 'describe.each("foo")(() => {})',
8082
errors: [{ messageId: 'nameAndCallback', line: 1, column: 22 }],
8183
},
84+
{
85+
code: 'describe.only.each("foo")(() => {})',
86+
errors: [{ messageId: 'nameAndCallback', line: 1, column: 27 }],
87+
},
8288
{
8389
code: 'describe(() => {})',
8490
errors: [{ messageId: 'nameAndCallback', line: 1, column: 10 }],

src/rules/utils.ts

-15
Original file line numberDiff line numberDiff line change
@@ -763,21 +763,6 @@ export const isDescribeCall = (
763763
return false;
764764
};
765765

766-
export const isDescribe = (
767-
node: TSESTree.CallExpression,
768-
): node is JestFunctionCallExpression<DescribeAlias> =>
769-
(node.callee.type === AST_NODE_TYPES.Identifier &&
770-
DescribeAlias.hasOwnProperty(node.callee.name)) ||
771-
(node.callee.type === AST_NODE_TYPES.MemberExpression &&
772-
node.callee.object.type === AST_NODE_TYPES.Identifier &&
773-
DescribeAlias.hasOwnProperty(node.callee.object.name) &&
774-
node.callee.property.type === AST_NODE_TYPES.Identifier &&
775-
DescribeProperty.hasOwnProperty(node.callee.property.name)) ||
776-
(node.callee.type === AST_NODE_TYPES.TaggedTemplateExpression &&
777-
node.callee.tag.type === AST_NODE_TYPES.MemberExpression &&
778-
node.callee.tag.object.type === AST_NODE_TYPES.Identifier &&
779-
DescribeAlias.hasOwnProperty(node.callee.tag.object.name));
780-
781766
/**
782767
* Checks if the given node` is a call to `<describe|test|it>.each(...)()`.
783768
* If `true`, the code must look like `<method>.each(...)()`.

src/rules/valid-describe.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
import {
66
createRule,
77
getJestFunctionArguments,
8-
isDescribe,
8+
isDescribeCall,
99
isEachCall,
1010
isFunction,
1111
} from './utils';
@@ -46,7 +46,7 @@ export default createRule({
4646
return {
4747
CallExpression(node) {
4848
if (
49-
!isDescribe(node) ||
49+
!isDescribeCall(node) ||
5050
node.callee.type === AST_NODE_TYPES.TaggedTemplateExpression
5151
) {
5252
return;

0 commit comments

Comments
 (0)