Skip to content

Commit 977022f

Browse files
authored
fix: add describe.for chains (#808)
* fix: add `describe.for` chains * fix: make `suite` a variant of `describe`
1 parent 046cfc1 commit 977022f

File tree

5 files changed

+109
-12
lines changed

5 files changed

+109
-12
lines changed

scripts/chain-permutations.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,11 @@ const data = [
3131
last: [],
3232
},
3333
{
34-
names: ['describe'],
34+
names: ['describe', 'suite'],
3535
first: [],
3636
conditions: ['skipIf', 'runIf'],
3737
methods: ['skip', 'only', 'concurrent', 'sequential', 'shuffle', 'todo'],
38-
last: ['each'],
39-
},
40-
{
41-
names: ['suite'],
42-
first: [],
43-
conditions: ['skipIf', 'runIf'],
44-
methods: ['skip', 'only', 'concurrent', 'sequential', 'shuffle', 'todo'],
45-
last: ['each'],
38+
last: ['each', 'for'],
4639
},
4740
]
4841

src/rules/valid-describe-callback.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ const hasNonEachMembersAndParams = (
3737
functionExpression: FunctionExpression,
3838
) => {
3939
return (
40-
vitestFnCall.members.every((s) => getAccessorValue(s) !== 'each') &&
41-
functionExpression.params.length
40+
vitestFnCall.members.every(
41+
(s) => !['each', 'for'].includes(getAccessorValue(s)),
42+
) && functionExpression.params.length
4243
)
4344
}
4445

src/utils/valid-vitest-fn-call-chains.ts

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,7 @@ export const ValidVitestFnCallChains = new Set([
853853
'describe.skipIf',
854854
'describe.runIf',
855855
'describe.each',
856+
'describe.for',
856857
'describe.skip.only',
857858
'describe.skip.concurrent',
858859
'describe.skip.sequential',
@@ -901,8 +902,16 @@ export const ValidVitestFnCallChains = new Set([
901902
'describe.sequential.each',
902903
'describe.shuffle.each',
903904
'describe.todo.each',
905+
'describe.skip.for',
906+
'describe.only.for',
907+
'describe.concurrent.for',
908+
'describe.sequential.for',
909+
'describe.shuffle.for',
910+
'describe.todo.for',
904911
'describe.skipIf.each',
912+
'describe.skipIf.for',
905913
'describe.runIf.each',
914+
'describe.runIf.for',
906915
'describe.skip.only.concurrent',
907916
'describe.skip.only.sequential',
908917
'describe.skip.only.shuffle',
@@ -1113,18 +1122,60 @@ export const ValidVitestFnCallChains = new Set([
11131122
'describe.todo.concurrent.each',
11141123
'describe.todo.sequential.each',
11151124
'describe.todo.shuffle.each',
1125+
'describe.skip.only.for',
1126+
'describe.skip.concurrent.for',
1127+
'describe.skip.sequential.for',
1128+
'describe.skip.shuffle.for',
1129+
'describe.skip.todo.for',
1130+
'describe.only.skip.for',
1131+
'describe.only.concurrent.for',
1132+
'describe.only.sequential.for',
1133+
'describe.only.shuffle.for',
1134+
'describe.only.todo.for',
1135+
'describe.concurrent.skip.for',
1136+
'describe.concurrent.only.for',
1137+
'describe.concurrent.sequential.for',
1138+
'describe.concurrent.shuffle.for',
1139+
'describe.concurrent.todo.for',
1140+
'describe.sequential.skip.for',
1141+
'describe.sequential.only.for',
1142+
'describe.sequential.concurrent.for',
1143+
'describe.sequential.shuffle.for',
1144+
'describe.sequential.todo.for',
1145+
'describe.shuffle.skip.for',
1146+
'describe.shuffle.only.for',
1147+
'describe.shuffle.concurrent.for',
1148+
'describe.shuffle.sequential.for',
1149+
'describe.shuffle.todo.for',
1150+
'describe.todo.skip.for',
1151+
'describe.todo.only.for',
1152+
'describe.todo.concurrent.for',
1153+
'describe.todo.sequential.for',
1154+
'describe.todo.shuffle.for',
11161155
'describe.skipIf.skip.each',
11171156
'describe.skipIf.only.each',
11181157
'describe.skipIf.concurrent.each',
11191158
'describe.skipIf.sequential.each',
11201159
'describe.skipIf.shuffle.each',
11211160
'describe.skipIf.todo.each',
1161+
'describe.skipIf.skip.for',
1162+
'describe.skipIf.only.for',
1163+
'describe.skipIf.concurrent.for',
1164+
'describe.skipIf.sequential.for',
1165+
'describe.skipIf.shuffle.for',
1166+
'describe.skipIf.todo.for',
11221167
'describe.runIf.skip.each',
11231168
'describe.runIf.only.each',
11241169
'describe.runIf.concurrent.each',
11251170
'describe.runIf.sequential.each',
11261171
'describe.runIf.shuffle.each',
11271172
'describe.runIf.todo.each',
1173+
'describe.runIf.skip.for',
1174+
'describe.runIf.only.for',
1175+
'describe.runIf.concurrent.for',
1176+
'describe.runIf.sequential.for',
1177+
'describe.runIf.shuffle.for',
1178+
'describe.runIf.todo.for',
11281179
'suite',
11291180
'suite.skip',
11301181
'suite.only',
@@ -1135,6 +1186,7 @@ export const ValidVitestFnCallChains = new Set([
11351186
'suite.skipIf',
11361187
'suite.runIf',
11371188
'suite.each',
1189+
'suite.for',
11381190
'suite.skip.only',
11391191
'suite.skip.concurrent',
11401192
'suite.skip.sequential',
@@ -1183,8 +1235,16 @@ export const ValidVitestFnCallChains = new Set([
11831235
'suite.sequential.each',
11841236
'suite.shuffle.each',
11851237
'suite.todo.each',
1238+
'suite.skip.for',
1239+
'suite.only.for',
1240+
'suite.concurrent.for',
1241+
'suite.sequential.for',
1242+
'suite.shuffle.for',
1243+
'suite.todo.for',
11861244
'suite.skipIf.each',
1245+
'suite.skipIf.for',
11871246
'suite.runIf.each',
1247+
'suite.runIf.for',
11881248
'suite.skip.only.concurrent',
11891249
'suite.skip.only.sequential',
11901250
'suite.skip.only.shuffle',
@@ -1395,18 +1455,60 @@ export const ValidVitestFnCallChains = new Set([
13951455
'suite.todo.concurrent.each',
13961456
'suite.todo.sequential.each',
13971457
'suite.todo.shuffle.each',
1458+
'suite.skip.only.for',
1459+
'suite.skip.concurrent.for',
1460+
'suite.skip.sequential.for',
1461+
'suite.skip.shuffle.for',
1462+
'suite.skip.todo.for',
1463+
'suite.only.skip.for',
1464+
'suite.only.concurrent.for',
1465+
'suite.only.sequential.for',
1466+
'suite.only.shuffle.for',
1467+
'suite.only.todo.for',
1468+
'suite.concurrent.skip.for',
1469+
'suite.concurrent.only.for',
1470+
'suite.concurrent.sequential.for',
1471+
'suite.concurrent.shuffle.for',
1472+
'suite.concurrent.todo.for',
1473+
'suite.sequential.skip.for',
1474+
'suite.sequential.only.for',
1475+
'suite.sequential.concurrent.for',
1476+
'suite.sequential.shuffle.for',
1477+
'suite.sequential.todo.for',
1478+
'suite.shuffle.skip.for',
1479+
'suite.shuffle.only.for',
1480+
'suite.shuffle.concurrent.for',
1481+
'suite.shuffle.sequential.for',
1482+
'suite.shuffle.todo.for',
1483+
'suite.todo.skip.for',
1484+
'suite.todo.only.for',
1485+
'suite.todo.concurrent.for',
1486+
'suite.todo.sequential.for',
1487+
'suite.todo.shuffle.for',
13981488
'suite.skipIf.skip.each',
13991489
'suite.skipIf.only.each',
14001490
'suite.skipIf.concurrent.each',
14011491
'suite.skipIf.sequential.each',
14021492
'suite.skipIf.shuffle.each',
14031493
'suite.skipIf.todo.each',
1494+
'suite.skipIf.skip.for',
1495+
'suite.skipIf.only.for',
1496+
'suite.skipIf.concurrent.for',
1497+
'suite.skipIf.sequential.for',
1498+
'suite.skipIf.shuffle.for',
1499+
'suite.skipIf.todo.for',
14041500
'suite.runIf.skip.each',
14051501
'suite.runIf.only.each',
14061502
'suite.runIf.concurrent.each',
14071503
'suite.runIf.sequential.each',
14081504
'suite.runIf.shuffle.each',
14091505
'suite.runIf.todo.each',
1506+
'suite.runIf.skip.for',
1507+
'suite.runIf.only.for',
1508+
'suite.runIf.concurrent.for',
1509+
'suite.runIf.sequential.for',
1510+
'suite.runIf.shuffle.for',
1511+
'suite.runIf.todo.for',
14101512
'xtest',
14111513
'xtest.each',
14121514
'xit',

tests/require-hook.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ruleTester } from './ruleTester'
44
ruleTester.run(RULE_NAME, rule, {
55
valid: [
66
'describe()',
7-
'describe("just a title")',
7+
`describe.for([])('%s', (value) => {})`,
88
`describe('a test', () =>
99
test('something', () => {
1010
expect(true).toBe(true);

tests/valid-describe-callback.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { ruleTester } from './ruleTester'
44
ruleTester.run(RULE_NAME, rule, {
55
valid: [
66
'describe.each([1, 2, 3])("%s", (a, b) => {});',
7+
'describe.for([1, 2, 3])("%s", (a, b) => {});',
78
'describe("foo", function() {})',
89
'describe("foo", () => {})',
910
'describe(`foo`, () => {})',

0 commit comments

Comments
 (0)