Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion __tests__/rules.test.js
Original file line number Diff line number Diff line change
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', () => {
Copy link
Contributor

@himynameisdave himynameisdave Mar 15, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

giphub

Good idea!

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
Original file line number Diff line number Diff line change
@@ -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,
};