Skip to content

Commit

Permalink
fix: make sure to always export all available rules (#240)
Browse files Browse the repository at this point in the history
  • Loading branch information
SimenB committed Mar 15, 2019
1 parent c793b7a commit 556a2c5
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 61 deletions.
14 changes: 13 additions & 1 deletion __tests__/rules.test.js
Expand Up @@ -4,9 +4,12 @@ const fs = require('fs');
const path = require('path');
const { rules } = require('../index');

const ruleNames = Object.keys(rules);
const numberOfRules = 30;

describe('rules', () => {
it('should have a corresponding doc for each rule', () => {
Object.keys(rules).forEach(rule => {
ruleNames.forEach(rule => {
const docPath = path.resolve(__dirname, '../docs/rules', `${rule}.md`);

if (!fs.existsSync(docPath)) {
Expand All @@ -16,4 +19,13 @@ describe('rules', () => {
}
});
});

it('should have the correct amount of rules', () => {
const { length } = ruleNames;
if (length !== numberOfRules) {
throw new Error(
`There should be exactly ${numberOfRules} rules, but there are ${length}. If you've added a new rule, please update this number.`
);
}
});
});
72 changes: 12 additions & 60 deletions index.js
@@ -1,34 +1,16 @@
'use strict';

const consistentTestIt = require('./rules/consistent-test-it');
const expectExpect = require('./rules/expect-expect');
const lowercaseName = require('./rules/lowercase-name');
const noDisabledTests = require('./rules/no-disabled-tests');
const noFocusedTests = require('./rules/no-focused-tests');
const noHooks = require('./rules/no-hooks');
const noIdenticalTitle = require('./rules/no-identical-title');
const noJasmineGlobals = require('./rules/no-jasmine-globals');
const noJestImport = require('./rules/no-jest-import');
const noLargeSnapshots = require('./rules/no-large-snapshots');
const noTestPrefixes = require('./rules/no-test-prefixes');
const noTestReturnStatement = require('./rules/no-test-return-statement');
const preferSpyOn = require('./rules/prefer-spy-on');
const preferToBeNull = require('./rules/prefer-to-be-null');
const preferToBeUndefined = require('./rules/prefer-to-be-undefined');
const preferToContain = require('./rules/prefer-to-contain');
const preferToHaveLength = require('./rules/prefer-to-have-length');
const validDescribe = require('./rules/valid-describe');
const validExpect = require('./rules/valid-expect');
const preferExpectAssertions = require('./rules/prefer-expect-assertions');
const validExpectInPromise = require('./rules/valid-expect-in-promise');
const preferInlineSnapshots = require('./rules/prefer-inline-snapshots');
const preferStrictEqual = require('./rules/prefer-strict-equal');
const requireTothrowMessage = require('./rules/require-tothrow-message');
const noAliasMethods = require('./rules/no-alias-methods');
const noTestCallback = require('./rules/no-test-callback');
const noTruthyFalsy = require('./rules/no-truthy-falsy');
const preferTodo = require('./rules/prefer-todo');
const preferCalledWith = require('./rules/prefer-called-with');
const fs = require('fs');
const path = require('path');

const rules = fs
.readdirSync(path.join(__dirname, 'rules'))
.filter(rule => rule !== '__tests__' && rule !== 'util.js')
.map(rule => path.basename(rule, '.js'))
.reduce(
(acc, curr) => Object.assign(acc, { [curr]: require(`./rules/${curr}`) }),
{}
);

const snapshotProcessor = require('./processors/snapshot-processor');

Expand Down Expand Up @@ -88,35 +70,5 @@ module.exports = {
processors: {
'.snap': snapshotProcessor,
},
rules: {
'consistent-test-it': consistentTestIt,
'expect-expect': expectExpect,
'lowercase-name': lowercaseName,
'no-disabled-tests': noDisabledTests,
'no-focused-tests': noFocusedTests,
'no-hooks': noHooks,
'no-identical-title': noIdenticalTitle,
'no-jasmine-globals': noJasmineGlobals,
'no-jest-import': noJestImport,
'no-large-snapshots': noLargeSnapshots,
'no-test-prefixes': noTestPrefixes,
'no-test-return-statement': noTestReturnStatement,
'prefer-spy-on': preferSpyOn,
'prefer-to-be-null': preferToBeNull,
'prefer-to-be-undefined': preferToBeUndefined,
'prefer-to-contain': preferToContain,
'prefer-to-have-length': preferToHaveLength,
'valid-describe': validDescribe,
'valid-expect': validExpect,
'prefer-expect-assertions': preferExpectAssertions,
'valid-expect-in-promise': validExpectInPromise,
'prefer-inline-snapshots': preferInlineSnapshots,
'prefer-strict-equal': preferStrictEqual,
'require-tothrow-message': requireTothrowMessage,
'no-alias-methods': noAliasMethods,
'no-test-callback': noTestCallback,
'no-truthy-falsy': noTruthyFalsy,
'prefer-todo': preferTodo,
'prefer-called-with': preferCalledWith,
},
rules,
};

0 comments on commit 556a2c5

Please sign in to comment.