Skip to content

Commit c3e0654

Browse files
authored
fix: Autogenerate recommended config
Merge pull request #4 from nickmccurdy/autogenerate-recommended-config
2 parents 1051c12 + c6b4899 commit c3e0654

File tree

5 files changed

+62
-14
lines changed

5 files changed

+62
-14
lines changed

README.md

+1-5
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,7 @@ Then configure the rules you want to use under the rules section.
3232

3333
```json
3434
{
35-
"rules": {
36-
"jest-dom/prefer-checked": "error",
37-
"jest-dom/prefer-enabled-disabled": "error",
38-
"jest-dom/prefer-required": "error"
39-
}
35+
"rules": {}
4036
}
4137
```
4238

lib/index.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@ let requireIndex = require('requireindex');
1717
// import all rules in lib/rules
1818
module.exports.rules = requireIndex(__dirname + '/rules');
1919

20+
module.exports.generateRecommendedConfig = rules => {
21+
return Object.entries(rules).reduce(
22+
(memo, [name, rule]) =>
23+
rule.meta.docs.recommended ? { ...memo, [name]: 'error' } : memo,
24+
{}
25+
);
26+
};
27+
2028
module.exports.configs = {
2129
recommended: {
2230
plugins: ['jest-dom'],
23-
rules: {
24-
'jest-dom/prefer-checked': 'error',
25-
'jest-dom/prefer-enabled-disabled': 'error',
26-
'jest-dom/prefer-required': 'error',
27-
},
31+
rules: module.exports.generateRecommendedConfig(module.exports.rules),
2832
},
2933
};

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"generate-readme-table": "node build/generate-readme-table.js"
1616
},
1717
"dependencies": {
18-
"requireindex": "~1.1.0"
18+
"requireindex": "~1.2.0"
1919
},
2020
"devDependencies": {
2121
"eslint": "^6.6.0",
@@ -30,4 +30,4 @@
3030
"node": ">=0.10.0"
3131
},
3232
"license": "ISC"
33-
}
33+
}
+40-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,42 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`should have all the rules 1`] = `Object {}`;
3+
exports[`should have all the rules 1`] = `
4+
Object {
5+
"prefer-checked": Object {
6+
"create": [Function],
7+
"meta": Object {
8+
"docs": Object {
9+
"category": "jest-dom",
10+
"description": "prefer toBeChecked over checking attributes",
11+
"recommended": true,
12+
"url": "prefer-checked",
13+
},
14+
"fixable": "code",
15+
},
16+
},
17+
"prefer-enabled-disabled": Object {
18+
"create": [Function],
19+
"meta": Object {
20+
"docs": Object {
21+
"category": "jest-dom",
22+
"description": "prefer toBeDisabled or toBeEnabled over checking attributes",
23+
"recommended": true,
24+
"url": "prefer-enabled-disabled",
25+
},
26+
"fixable": "code",
27+
},
28+
},
29+
"prefer-required": Object {
30+
"create": [Function],
31+
"meta": Object {
32+
"docs": Object {
33+
"category": "jest-dom",
34+
"description": "prefer toBeRequired over checking properties",
35+
"recommended": true,
36+
"url": "prefer-required",
37+
},
38+
"fixable": "code",
39+
},
40+
},
41+
}
42+
`;

tests/index.test.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
1-
const { rules } = require('../lib/index');
1+
const { rules, generateRecommendedConfig, configs } = require('../lib/index');
22

33
it('should have all the rules', () => {
44
expect(rules).toMatchSnapshot();
55
});
6+
7+
it('should have a recommended config with recommended rules', () => {
8+
expect(
9+
generateRecommendedConfig({
10+
good: { meta: { docs: { recommended: true } } },
11+
bad: { meta: { docs: { recommended: false } } },
12+
})
13+
).toEqual({ good: 'error' });
14+
});

0 commit comments

Comments
 (0)