Skip to content

Commit e9a3e58

Browse files
committed
chore: document rules that support suggestions in README
1 parent 4ffdebe commit e9a3e58

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

README.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -148,15 +148,15 @@ installations requiring long-term consistency.
148148
| [no-mocks-import](docs/rules/no-mocks-import.md) | Disallow manually importing from **mocks** | ![recommended][] | |
149149
| [no-restricted-matchers](docs/rules/no-restricted-matchers.md) | Disallow specific matchers & modifiers | | |
150150
| [no-standalone-expect](docs/rules/no-standalone-expect.md) | Prevents expects that are outside of an it or test block. | ![recommended][] | |
151-
| [no-test-callback](docs/rules/no-test-callback.md) | Avoid using a callback in asynchronous tests | ![recommended][] | ![fixable][] |
151+
| [no-test-callback](docs/rules/no-test-callback.md) | Avoid using a callback in asynchronous tests | ![recommended][] | ![suggest][] |
152152
| [no-test-prefixes](docs/rules/no-test-prefixes.md) | Use `.only` and `.skip` over `f` and `x` | ![recommended][] | ![fixable][] |
153153
| [no-test-return-statement](docs/rules/no-test-return-statement.md) | Disallow explicitly returning from tests | | |
154154
| [no-try-expect](docs/rules/no-try-expect.md) | Prefer using toThrow for exception tests | ![recommended][] | |
155155
| [prefer-called-with](docs/rules/prefer-called-with.md) | Suggest using `toBeCalledWith()` OR `toHaveBeenCalledWith()` | | |
156-
| [prefer-expect-assertions](docs/rules/prefer-expect-assertions.md) | Suggest using `expect.assertions()` OR `expect.hasAssertions()` | | |
156+
| [prefer-expect-assertions](docs/rules/prefer-expect-assertions.md) | Suggest using `expect.assertions()` OR `expect.hasAssertions()` | | ![suggest][] |
157157
| [prefer-hooks-on-top](docs/rules/prefer-hooks-on-top.md) | Suggest to have all hooks at top level | | |
158158
| [prefer-spy-on](docs/rules/prefer-spy-on.md) | Suggest using `jest.spyOn()` | | ![fixable][] |
159-
| [prefer-strict-equal](docs/rules/prefer-strict-equal.md) | Suggest using toStrictEqual() | | ![fixable][] |
159+
| [prefer-strict-equal](docs/rules/prefer-strict-equal.md) | Suggest using toStrictEqual() | | ![suggest][] |
160160
| [prefer-to-be-null](docs/rules/prefer-to-be-null.md) | Suggest using `toBeNull()` | ![style][] | ![fixable][] |
161161
| [prefer-to-be-undefined](docs/rules/prefer-to-be-undefined.md) | Suggest using `toBeUndefined()` | ![style][] | ![fixable][] |
162162
| [prefer-to-contain](docs/rules/prefer-to-contain.md) | Suggest using `toContain()` | ![style][] | ![fixable][] |
@@ -186,5 +186,6 @@ ensure consistency and readability in jest test suites.
186186
https://github.com/dangreenisrael/eslint-plugin-jest-formatting
187187

188188
[recommended]: https://img.shields.io/badge/-recommended-lightgrey.svg
189+
[suggest]: https://img.shields.io/badge/-suggest-yellow.svg
189190
[fixable]: https://img.shields.io/badge/-fixable-green.svg
190191
[style]: https://img.shields.io/badge/-style-blue.svg

tools/generate-rules-table.ts

+15-7
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,20 @@
22

33
import * as fs from 'fs';
44
import * as path from 'path';
5-
import ESLint from 'eslint';
5+
import { TSESLint } from '@typescript-eslint/experimental-utils';
66
import prettier from 'prettier';
77
import config from '../src/index';
88

9+
type FixType = 'fixable' | 'suggest';
10+
911
interface RuleDetails {
1012
name: string;
1113
description: string;
12-
fixable: boolean;
14+
fixable: FixType | false;
1315
}
1416

17+
type RuleModule = TSESLint.RuleModule<string, unknown[]>;
18+
1519
const staticElements = {
1620
listHeaderRow: ['Rule', 'Description', 'Configurations', 'Fixable'],
1721
listSpacerRow: Array(5).fill('-'),
@@ -33,7 +37,7 @@ const buildRuleRow = (rule: RuleDetails): string[] => [
3337
`[${rule.name}](docs/rules/${rule.name}.md)`,
3438
rule.description,
3539
getConfigurationColumnValueForRule(rule),
36-
rule.fixable ? '![fixable][]' : '',
40+
rule.fixable ? `![${rule.fixable}][]` : '',
3741
];
3842

3943
const generateRulesListMarkdown = (details: RuleDetails[]): string =>
@@ -77,24 +81,28 @@ const importDefault = (moduleName: string) =>
7781
// eslint-disable-next-line @typescript-eslint/no-require-imports
7882
interopRequireDefault(require(moduleName)).default;
7983

80-
const requireJestRule = (name: string): ESLint.Rule.RuleModule =>
84+
const requireJestRule = (name: string): RuleModule =>
8185
importDefault(
8286
`../src/rules/${name}`,
8387
// path.join('..', 'src', 'rules', name),
84-
) as ESLint.Rule.RuleModule;
88+
) as RuleModule;
8589

8690
const details: RuleDetails[] = Object.keys(config.configs.all.rules)
8791
.map(name => name.split('/')[1])
8892
.map(name => [name, requireJestRule(name)] as const)
8993
.filter(
90-
(nameAndRule): nameAndRule is [string, Required<ESLint.Rule.RuleModule>] =>
94+
(nameAndRule): nameAndRule is [string, Required<RuleModule>] =>
9195
!!nameAndRule[1].meta && !nameAndRule[1].meta.deprecated,
9296
)
9397
.map(
9498
([name, rule]): RuleDetails => ({
9599
name,
96100
description: rule.meta.docs?.description ?? '',
97-
fixable: !!rule.meta.fixable,
101+
fixable: rule.meta.fixable
102+
? 'fixable'
103+
: rule.meta.docs?.suggestion
104+
? 'suggest'
105+
: false,
98106
}),
99107
);
100108

0 commit comments

Comments
 (0)