Skip to content

Commit 295120e

Browse files
authored
refactor: use flatMap instead of reduce (#1541)
1 parent 8bba541 commit 295120e

File tree

4 files changed

+49
-76
lines changed

4 files changed

+49
-76
lines changed

src/__tests__/rules.test.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,9 @@ describe('rules', () => {
7676
expect(Object.keys(recommendedConfigs['flat/all'].rules)).toHaveLength(
7777
ruleNames.length - deprecatedRules.length,
7878
);
79-
const allConfigRules = Object.values(recommendedConfigs)
80-
.map(config => Object.keys(config.rules ?? {}))
81-
.reduce((previousValue, currentValue) => [
82-
...previousValue,
83-
...currentValue,
84-
]);
79+
const allConfigRules = Object.values(recommendedConfigs).flatMap(config =>
80+
Object.keys(config.rules ?? {}),
81+
);
8582

8683
allConfigRules.forEach(rule => {
8784
const ruleNamePrefix = 'jest/';

src/rules/__tests__/no-deprecated-functions.test.ts

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -120,30 +120,26 @@ describe('the rule', () => {
120120
valid: [
121121
'jest',
122122
'require("fs")',
123-
...allowedFunctions
124-
.map(func => generateValidCases(jestVersion, func))
125-
.reduce((acc, arr) => acc.concat(arr), []),
123+
...allowedFunctions.flatMap(func =>
124+
generateValidCases(jestVersion, func),
125+
),
126126
],
127-
invalid: deprecations
128-
.map(([, deprecation, replacement]) =>
129-
generateInvalidCases(jestVersion, deprecation, replacement),
130-
)
131-
.reduce((acc, arr) => acc.concat(arr), []),
127+
invalid: deprecations.flatMap(([, deprecation, replacement]) =>
128+
generateInvalidCases(jestVersion, deprecation, replacement),
129+
),
132130
});
133131

134132
ruleTester.run('detected jest version', rule, {
135133
valid: [
136134
'jest',
137135
'require("fs")',
138-
...allowedFunctions
139-
.map(func => generateValidCases(undefined, func))
140-
.reduce((acc, arr) => acc.concat(arr), []),
136+
...allowedFunctions.flatMap(func =>
137+
generateValidCases(undefined, func),
138+
),
141139
],
142-
invalid: deprecations
143-
.map(([, deprecation, replacement]) =>
144-
generateInvalidCases(undefined, deprecation, replacement),
145-
)
146-
.reduce((acc, arr) => acc.concat(arr), []),
140+
invalid: deprecations.flatMap(([, deprecation, replacement]) =>
141+
generateInvalidCases(undefined, deprecation, replacement),
142+
),
147143
});
148144
});
149145

src/rules/__tests__/prefer-comparison-matcher.test.ts

Lines changed: 27 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -205,30 +205,24 @@ const generateValidStringLiteralCases = (operator: string, matcher: string) => {
205205
['x', "'y'"],
206206
['x', '`y`'],
207207
['x', '`y${z}`'],
208-
].reduce(
209-
(cases, [a, b]) => [
210-
...cases,
211-
...[
212-
`expect(${a} ${operator} ${b}).${matcher}(true)`,
213-
`expect(${a} ${operator} ${b}).${matcher}(false)`,
214-
`expect(${a} ${operator} ${b}).not.${matcher}(true)`,
215-
`expect(${a} ${operator} ${b}).not.${matcher}(false)`,
216-
`expect(${a} ${operator} ${b}).resolves.${matcher}(true)`,
217-
`expect(${a} ${operator} ${b}).resolves.${matcher}(false)`,
218-
`expect(${a} ${operator} ${b}).resolves.not.${matcher}(true)`,
219-
`expect(${a} ${operator} ${b}).resolves.not.${matcher}(false)`,
220-
`expect(${b} ${operator} ${a}).resolves.not.${matcher}(false)`,
221-
`expect(${b} ${operator} ${a}).resolves.not.${matcher}(true)`,
222-
`expect(${b} ${operator} ${a}).resolves.${matcher}(false)`,
223-
`expect(${b} ${operator} ${a}).resolves.${matcher}(true)`,
224-
`expect(${b} ${operator} ${a}).not.${matcher}(false)`,
225-
`expect(${b} ${operator} ${a}).not.${matcher}(true)`,
226-
`expect(${b} ${operator} ${a}).${matcher}(false)`,
227-
`expect(${b} ${operator} ${a}).${matcher}(true)`,
228-
],
229-
],
230-
[],
231-
);
208+
].flatMap(([a, b]) => [
209+
`expect(${a} ${operator} ${b}).${matcher}(true)`,
210+
`expect(${a} ${operator} ${b}).${matcher}(false)`,
211+
`expect(${a} ${operator} ${b}).not.${matcher}(true)`,
212+
`expect(${a} ${operator} ${b}).not.${matcher}(false)`,
213+
`expect(${a} ${operator} ${b}).resolves.${matcher}(true)`,
214+
`expect(${a} ${operator} ${b}).resolves.${matcher}(false)`,
215+
`expect(${a} ${operator} ${b}).resolves.not.${matcher}(true)`,
216+
`expect(${a} ${operator} ${b}).resolves.not.${matcher}(false)`,
217+
`expect(${b} ${operator} ${a}).resolves.not.${matcher}(false)`,
218+
`expect(${b} ${operator} ${a}).resolves.not.${matcher}(true)`,
219+
`expect(${b} ${operator} ${a}).resolves.${matcher}(false)`,
220+
`expect(${b} ${operator} ${a}).resolves.${matcher}(true)`,
221+
`expect(${b} ${operator} ${a}).not.${matcher}(false)`,
222+
`expect(${b} ${operator} ${a}).not.${matcher}(true)`,
223+
`expect(${b} ${operator} ${a}).${matcher}(false)`,
224+
`expect(${b} ${operator} ${a}).${matcher}(true)`,
225+
]);
232226
};
233227

234228
const testComparisonOperator = (
@@ -244,27 +238,17 @@ const testComparisonOperator = (
244238
`expect(value).${preferredMatcherWhenNegated}(1);`,
245239
`expect(value).not.${preferredMatcher}(1);`,
246240
`expect(value).not.${preferredMatcherWhenNegated}(1);`,
247-
...['toBe', 'toEqual', 'toStrictEqual'].reduce<string[]>(
248-
(cases, equalityMatcher) => [
249-
...cases,
250-
...generateValidStringLiteralCases(operator, equalityMatcher),
251-
],
252-
[],
241+
...['toBe', 'toEqual', 'toStrictEqual'].flatMap(equalityMatcher =>
242+
generateValidStringLiteralCases(operator, equalityMatcher),
253243
),
254244
],
255-
invalid: ['toBe', 'toEqual', 'toStrictEqual'].reduce<
256-
Array<TSESLint.InvalidTestCase<'useToBeComparison', never>>
257-
>(
258-
(cases, equalityMatcher) => [
259-
...cases,
260-
...generateInvalidCases(
261-
operator,
262-
equalityMatcher,
263-
preferredMatcher,
264-
preferredMatcherWhenNegated,
265-
),
266-
],
267-
[],
245+
invalid: ['toBe', 'toEqual', 'toStrictEqual'].flatMap(equalityMatcher =>
246+
generateInvalidCases(
247+
operator,
248+
equalityMatcher,
249+
preferredMatcher,
250+
preferredMatcherWhenNegated,
251+
),
268252
),
269253
});
270254
};

src/rules/utils/misc.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -137,18 +137,14 @@ export const getTestCallExpressionsFromDeclaredVariables = (
137137
declaredVariables: readonly TSESLint.Scope.Variable[],
138138
context: TSESLint.RuleContext<string, unknown[]>,
139139
): TSESTree.CallExpression[] => {
140-
return declaredVariables.reduce<TSESTree.CallExpression[]>(
141-
(acc, { references }) =>
142-
acc.concat(
143-
references
144-
.map(({ identifier }) => identifier.parent)
145-
.filter(
146-
(node): node is TSESTree.CallExpression =>
147-
node?.type === AST_NODE_TYPES.CallExpression &&
148-
isTypeOfJestFnCall(node, context, ['test']),
149-
),
140+
return declaredVariables.flatMap(({ references }) =>
141+
references
142+
.map(({ identifier }) => identifier.parent)
143+
.filter(
144+
(node): node is TSESTree.CallExpression =>
145+
node?.type === AST_NODE_TYPES.CallExpression &&
146+
isTypeOfJestFnCall(node, context, ['test']),
150147
),
151-
[],
152148
);
153149
};
154150

0 commit comments

Comments
 (0)