From 082f210d50c7fb2762e55113041246f3ff23b46f Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Thu, 31 Oct 2019 08:43:54 -0400 Subject: [PATCH 1/7] Use lodash.mapValues in recommended config --- lib/index.js | 7 ++----- package.json | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/index.js b/lib/index.js index 9a93894..7d26b3a 100644 --- a/lib/index.js +++ b/lib/index.js @@ -8,6 +8,7 @@ // Requirements //------------------------------------------------------------------------------ +let mapValues = require('lodash.mapvalues'); let requireIndex = require('requireindex'); //------------------------------------------------------------------------------ @@ -20,10 +21,6 @@ module.exports.rules = requireIndex(__dirname + '/rules'); 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: mapValues(module.exports.rules, () => 'error'), }, }; diff --git a/package.json b/package.json index ed8c1c4..70d823f 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "generate-readme-table": "node build/generate-readme-table.js" }, "dependencies": { + "lodash.mapvalues": "^4.6.0", "requireindex": "~1.1.0" }, "devDependencies": { @@ -30,4 +31,4 @@ "node": ">=0.10.0" }, "license": "ISC" -} \ No newline at end of file +} From 879f5ecbbfbbdedcffe9b0b7db1fc840a13c470a Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Thu, 31 Oct 2019 09:01:21 -0400 Subject: [PATCH 2/7] Remove config JSON from readme --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) 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": {} } ``` From 5c99f13a70a3d1da1808235285ad4f063b7d7fe2 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Thu, 31 Oct 2019 09:47:28 -0400 Subject: [PATCH 3/7] Drop lodash.mapValues dependency --- lib/index.js | 6 ++++-- package.json | 3 +-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/index.js b/lib/index.js index 7d26b3a..c29dd53 100644 --- a/lib/index.js +++ b/lib/index.js @@ -8,7 +8,6 @@ // Requirements //------------------------------------------------------------------------------ -let mapValues = require('lodash.mapvalues'); let requireIndex = require('requireindex'); //------------------------------------------------------------------------------ @@ -21,6 +20,9 @@ module.exports.rules = requireIndex(__dirname + '/rules'); module.exports.configs = { recommended: { plugins: ['jest-dom'], - rules: mapValues(module.exports.rules, () => 'error'), + rules: Object.keys(module.exports.rules).reduce( + (memo, rule) => ({ ...memo, [rule]: 'error' }), + {} + ), }, }; diff --git a/package.json b/package.json index 70d823f..ed8c1c4 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "generate-readme-table": "node build/generate-readme-table.js" }, "dependencies": { - "lodash.mapvalues": "^4.6.0", "requireindex": "~1.1.0" }, "devDependencies": { @@ -31,4 +30,4 @@ "node": ">=0.10.0" }, "license": "ISC" -} +} \ No newline at end of file From d36af26a8a8dd133255e25a8220e79c35b373feb Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Thu, 31 Oct 2019 09:57:57 -0400 Subject: [PATCH 4/7] Only use recommended rules --- lib/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/index.js b/lib/index.js index c29dd53..337f05e 100644 --- a/lib/index.js +++ b/lib/index.js @@ -20,8 +20,9 @@ module.exports.rules = requireIndex(__dirname + '/rules'); module.exports.configs = { recommended: { plugins: ['jest-dom'], - rules: Object.keys(module.exports.rules).reduce( - (memo, rule) => ({ ...memo, [rule]: 'error' }), + rules: Object.entries(module.exports.rules).reduce( + (memo, [name, rule]) => + rule.meta.docs.recommended ? { ...memo, [name]: 'error' } : memo, {} ), }, From 8f7ed93453d09bfd90a803c7ebfc836447af11d2 Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Thu, 31 Oct 2019 11:48:19 -0400 Subject: [PATCH 5/7] Upgrade requireindex to fix empty rules in Jest --- package.json | 4 +-- tests/__snapshots__/index.test.js.snap | 41 +++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 3 deletions(-) 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", + }, + }, +} +`; From ac58a9aa818800c51d352e475d8a6eae06741e0c Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Thu, 31 Oct 2019 12:06:18 -0400 Subject: [PATCH 6/7] Add test for recommended config --- tests/index.test.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/index.test.js b/tests/index.test.js index a2fbeff..3a01486 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -1,5 +1,15 @@ -const { rules } = require('../lib/index'); +const { rules, configs } = require('../lib/index'); it('should have all the rules', () => { expect(rules).toMatchSnapshot(); }); + +it('should have a recommended config with recommended rules', () => { + for (const [name, rule] of Object.entries(rules)) { + if (rule.meta.docs.recommended) { + expect(configs.recommended.rules).toHaveProperty(name, 'error'); + } else { + expect(configs.recommended.rules).not.toHaveProperty(name); + } + } +}); From c6b4899efaf7989d5f5a5e7babafd3098e7e014a Mon Sep 17 00:00:00 2001 From: Nick McCurdy Date: Thu, 31 Oct 2019 12:42:41 -0400 Subject: [PATCH 7/7] Extract recommended config generation for testing --- lib/index.js | 14 +++++++++----- tests/index.test.js | 15 +++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/index.js b/lib/index.js index 337f05e..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: Object.entries(module.exports.rules).reduce( - (memo, [name, rule]) => - rule.meta.docs.recommended ? { ...memo, [name]: 'error' } : memo, - {} - ), + rules: module.exports.generateRecommendedConfig(module.exports.rules), }, }; diff --git a/tests/index.test.js b/tests/index.test.js index 3a01486..a24f168 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -1,15 +1,14 @@ -const { rules, configs } = 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', () => { - for (const [name, rule] of Object.entries(rules)) { - if (rule.meta.docs.recommended) { - expect(configs.recommended.rules).toHaveProperty(name, 'error'); - } else { - expect(configs.recommended.rules).not.toHaveProperty(name); - } - } + expect( + generateRecommendedConfig({ + good: { meta: { docs: { recommended: true } } }, + bad: { meta: { docs: { recommended: false } } }, + }) + ).toEqual({ good: 'error' }); });