Skip to content

Commit 14cb815

Browse files
SimenBG-Rath
authored andcommitted
chore: update recommended config
BREAKING CHANGE: new rules added to recommended config closes #429
1 parent 24ddc1b commit 14cb815

File tree

4 files changed

+139
-10
lines changed

4 files changed

+139
-10
lines changed

README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -111,28 +111,28 @@ installations requiring long-term consistency.
111111
| Rule | Description | Configurations | Fixable |
112112
| ------------------------------ | ----------------------------------------------------------------- | ---------------- | ------------------- |
113113
| [consistent-test-it][] | Enforce consistent test or it keyword | | ![fixable-green][] |
114-
| [expect-expect][] | Enforce assertion to be made in a test body | | |
114+
| [expect-expect][] | Enforce assertion to be made in a test body | ![recommended][] | |
115115
| [lowercase-name][] | Disallow capitalized test names | | ![fixable-green][] |
116-
| [no-alias-methods][] | Disallow alias methods | ![recommended][] | ![fixable-green][] |
117-
| [no-commented-out-tests][] | Disallow commented out tests | | |
116+
| [no-alias-methods][] | Disallow alias methods | ![style][] | ![fixable-green][] |
117+
| [no-commented-out-tests][] | Disallow commented out tests | ![recommended][] | |
118118
| [no-disabled-tests][] | Disallow disabled tests | ![recommended][] | |
119119
| [no-duplicate-hooks][] | Disallow duplicate hooks within a `describe` block | | |
120120
| [no-expect-resolves][] | Disallow using `expect().resolves` | | |
121-
| [no-export][] | Disallow export from test files | | |
121+
| [no-export][] | Disallow export from test files | ![recommended][] | |
122122
| [no-focused-tests][] | Disallow focused tests | ![recommended][] | |
123123
| [no-hooks][] | Disallow setup and teardown hooks | | |
124124
| [no-identical-title][] | Disallow identical titles | ![recommended][] | |
125125
| [no-if][] | Disallow conditional logic | | |
126126
| [no-jasmine-globals][] | Disallow Jasmine globals | ![recommended][] | ![fixable-yellow][] |
127127
| [no-jest-import][] | Disallow importing `jest` | ![recommended][] | |
128128
| [no-large-snapshots][] | Disallow large snapshots | | |
129-
| [no-mocks-import][] | Disallow manually importing from `__mocks__` | | |
130-
| [no-standalone-expect][] | Prevents `expect` statements outside of a `test` or `it` block | | |
131-
| [no-test-callback][] | Using a callback in asynchronous tests | | ![fixable-green][] |
129+
| [no-mocks-import][] | Disallow manually importing from `__mocks__` | ![recommended][] | |
130+
| [no-standalone-expect][] | Prevents `expect` statements outside of a `test` or `it` block | ![recommended][] | |
131+
| [no-test-callback][] | Using a callback in asynchronous tests | ![recommended][] | ![fixable-green][] |
132132
| [no-test-prefixes][] | Disallow using `f` & `x` prefixes to define focused/skipped tests | ![recommended][] | ![fixable-green][] |
133133
| [no-test-return-statement][] | Disallow explicitly returning from tests | | |
134134
| [no-truthy-falsy][] | Disallow using `toBeTruthy()` & `toBeFalsy()` | | |
135-
| [no-try-expect][] | Prevent `catch` assertions in tests | | |
135+
| [no-try-expect][] | Prevent `catch` assertions in tests | ![recommended][] | |
136136
| [prefer-called-with][] | Suggest using `toBeCalledWith()` OR `toHaveBeenCalledWith()` | | |
137137
| [prefer-expect-assertions][] | Suggest using `expect.assertions()` OR `expect.hasAssertions()` | | |
138138
| [prefer-hooks-on-top][] | Suggest to have all hooks at top-level before tests | | |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`rules should export configs that refer to actual rules 1`] = `
4+
Object {
5+
"all": Object {
6+
"env": Object {
7+
"jest/globals": true,
8+
},
9+
"plugins": Array [
10+
"jest",
11+
],
12+
"rules": Object {
13+
"jest/consistent-test-it": "error",
14+
"jest/expect-expect": "error",
15+
"jest/lowercase-name": "error",
16+
"jest/no-alias-methods": "error",
17+
"jest/no-commented-out-tests": "error",
18+
"jest/no-disabled-tests": "error",
19+
"jest/no-duplicate-hooks": "error",
20+
"jest/no-expect-resolves": "error",
21+
"jest/no-export": "error",
22+
"jest/no-focused-tests": "error",
23+
"jest/no-hooks": "error",
24+
"jest/no-identical-title": "error",
25+
"jest/no-if": "error",
26+
"jest/no-jasmine-globals": "error",
27+
"jest/no-jest-import": "error",
28+
"jest/no-large-snapshots": "error",
29+
"jest/no-mocks-import": "error",
30+
"jest/no-standalone-expect": "error",
31+
"jest/no-test-callback": "error",
32+
"jest/no-test-prefixes": "error",
33+
"jest/no-test-return-statement": "error",
34+
"jest/no-truthy-falsy": "error",
35+
"jest/no-try-expect": "error",
36+
"jest/prefer-called-with": "error",
37+
"jest/prefer-expect-assertions": "error",
38+
"jest/prefer-hooks-on-top": "error",
39+
"jest/prefer-inline-snapshots": "error",
40+
"jest/prefer-spy-on": "error",
41+
"jest/prefer-strict-equal": "error",
42+
"jest/prefer-to-be-null": "error",
43+
"jest/prefer-to-be-undefined": "error",
44+
"jest/prefer-to-contain": "error",
45+
"jest/prefer-to-have-length": "error",
46+
"jest/prefer-todo": "error",
47+
"jest/require-to-throw-message": "error",
48+
"jest/require-top-level-describe": "error",
49+
"jest/valid-describe": "error",
50+
"jest/valid-expect": "error",
51+
"jest/valid-expect-in-promise": "error",
52+
"jest/valid-title": "error",
53+
},
54+
},
55+
"recommended": Object {
56+
"env": Object {
57+
"jest/globals": true,
58+
},
59+
"plugins": Array [
60+
"jest",
61+
],
62+
"rules": Object {
63+
"jest/expect-expect": "warn",
64+
"jest/no-commented-out-tests": "warn",
65+
"jest/no-disabled-tests": "warn",
66+
"jest/no-export": "error",
67+
"jest/no-focused-tests": "error",
68+
"jest/no-identical-title": "error",
69+
"jest/no-jasmine-globals": "warn",
70+
"jest/no-jest-import": "error",
71+
"jest/no-mocks-import": "error",
72+
"jest/no-standalone-expect": "error",
73+
"jest/no-test-callback": "error",
74+
"jest/no-test-prefixes": "error",
75+
"jest/no-try-expect": "error",
76+
"jest/valid-describe": "error",
77+
"jest/valid-expect": "error",
78+
"jest/valid-expect-in-promise": "error",
79+
},
80+
},
81+
"style": Object {
82+
"plugins": Array [
83+
"jest",
84+
],
85+
"rules": Object {
86+
"jest/no-alias-methods": "warn",
87+
"jest/prefer-to-be-null": "error",
88+
"jest/prefer-to-be-undefined": "error",
89+
"jest/prefer-to-contain": "error",
90+
"jest/prefer-to-have-length": "error",
91+
},
92+
},
93+
}
94+
`;

src/__tests__/rules.test.ts

+29
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,33 @@ describe('rules', () => {
2626
);
2727
}
2828
});
29+
30+
it('should export configs that refer to actual rules', () => {
31+
const recommendedConfigs = plugin.configs;
32+
33+
expect(recommendedConfigs).toMatchSnapshot();
34+
expect(Object.keys(recommendedConfigs)).toEqual([
35+
'all',
36+
'recommended',
37+
'style',
38+
]);
39+
expect(Object.keys(recommendedConfigs.all.rules)).toHaveLength(
40+
ruleNames.length,
41+
);
42+
const allConfigRules = Object.values(recommendedConfigs)
43+
.map(config => Object.keys(config.rules))
44+
.reduce((previousValue, currentValue) => [
45+
...previousValue,
46+
...currentValue,
47+
]);
48+
49+
allConfigRules.forEach(rule => {
50+
const ruleNamePrefix = 'jest/';
51+
const ruleName = rule.slice(ruleNamePrefix.length);
52+
expect(rule.startsWith(ruleNamePrefix)).toBe(true);
53+
expect(ruleNames).toContain(ruleName);
54+
// eslint-disable-next-line @typescript-eslint/no-require-imports
55+
expect(() => require(`../rules/${ruleName}`)).not.toThrow();
56+
});
57+
});
2958
});

src/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,19 @@ export = {
4444
'jest/globals': true,
4545
},
4646
rules: {
47-
'jest/no-alias-methods': 'warn',
47+
'jest/expect-expect': 'warn',
48+
'jest/no-commented-out-tests': 'warn',
4849
'jest/no-disabled-tests': 'warn',
50+
'jest/no-export': 'error',
4951
'jest/no-focused-tests': 'error',
5052
'jest/no-identical-title': 'error',
5153
'jest/no-jest-import': 'error',
52-
// 'jest/no-mocks-import': 'error',
54+
'jest/no-mocks-import': 'error',
5355
'jest/no-jasmine-globals': 'warn',
56+
'jest/no-standalone-expect': 'error',
57+
'jest/no-test-callback': 'error',
5458
'jest/no-test-prefixes': 'error',
59+
'jest/no-try-expect': 'error',
5560
'jest/valid-describe': 'error',
5661
'jest/valid-expect': 'error',
5762
'jest/valid-expect-in-promise': 'error',
@@ -60,6 +65,7 @@ export = {
6065
style: {
6166
plugins: ['jest'],
6267
rules: {
68+
'jest/no-alias-methods': 'warn',
6369
'jest/prefer-to-be-null': 'error',
6470
'jest/prefer-to-be-undefined': 'error',
6571
'jest/prefer-to-contain': 'error',

0 commit comments

Comments
 (0)