diff --git a/README.md b/README.md index b4b5971..45a1d48 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,7 @@ Then configure the rules you want to use under the rules section. ```json { - "rules": { - "jest-dom/prefer-checked": "error", - "jest-dom/prefer-enabled-disabled": "error", - "jest-dom/prefer-required": "error" - } + "rules": {} } ``` diff --git a/lib/index.js b/lib/index.js index 9a93894..836ec75 100644 --- a/lib/index.js +++ b/lib/index.js @@ -17,13 +17,17 @@ let requireIndex = require('requireindex'); // import all rules in lib/rules module.exports.rules = requireIndex(__dirname + '/rules'); +module.exports.generateRecommendedConfig = rules => { + return Object.entries(rules).reduce( + (memo, [name, rule]) => + rule.meta.docs.recommended ? { ...memo, [name]: 'error' } : memo, + {} + ); +}; + module.exports.configs = { recommended: { plugins: ['jest-dom'], - rules: { - 'jest-dom/prefer-checked': 'error', - 'jest-dom/prefer-enabled-disabled': 'error', - 'jest-dom/prefer-required': 'error', - }, + rules: module.exports.generateRecommendedConfig(module.exports.rules), }, }; diff --git a/package.json b/package.json index ed8c1c4..436373d 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "generate-readme-table": "node build/generate-readme-table.js" }, "dependencies": { - "requireindex": "~1.1.0" + "requireindex": "~1.2.0" }, "devDependencies": { "eslint": "^6.6.0", @@ -30,4 +30,4 @@ "node": ">=0.10.0" }, "license": "ISC" -} \ No newline at end of file +} diff --git a/tests/__snapshots__/index.test.js.snap b/tests/__snapshots__/index.test.js.snap index 2165588..a10e7eb 100644 --- a/tests/__snapshots__/index.test.js.snap +++ b/tests/__snapshots__/index.test.js.snap @@ -1,3 +1,42 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`should have all the rules 1`] = `Object {}`; +exports[`should have all the rules 1`] = ` +Object { + "prefer-checked": Object { + "create": [Function], + "meta": Object { + "docs": Object { + "category": "jest-dom", + "description": "prefer toBeChecked over checking attributes", + "recommended": true, + "url": "prefer-checked", + }, + "fixable": "code", + }, + }, + "prefer-enabled-disabled": Object { + "create": [Function], + "meta": Object { + "docs": Object { + "category": "jest-dom", + "description": "prefer toBeDisabled or toBeEnabled over checking attributes", + "recommended": true, + "url": "prefer-enabled-disabled", + }, + "fixable": "code", + }, + }, + "prefer-required": Object { + "create": [Function], + "meta": Object { + "docs": Object { + "category": "jest-dom", + "description": "prefer toBeRequired over checking properties", + "recommended": true, + "url": "prefer-required", + }, + "fixable": "code", + }, + }, +} +`; diff --git a/tests/index.test.js b/tests/index.test.js index a2fbeff..a24f168 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -1,5 +1,14 @@ -const { rules } = require('../lib/index'); +const { rules, generateRecommendedConfig, configs } = require('../lib/index'); it('should have all the rules', () => { expect(rules).toMatchSnapshot(); }); + +it('should have a recommended config with recommended rules', () => { + expect( + generateRecommendedConfig({ + good: { meta: { docs: { recommended: true } } }, + bad: { meta: { docs: { recommended: false } } }, + }) + ).toEqual({ good: 'error' }); +});