Skip to content

Commit

Permalink
fix(require-tothrow-message): rename rule to require-to-throw-message
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisblossom committed Jul 18, 2019
1 parent 3ee3874 commit e48fade
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 42 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ installations requiring long-term consistency.
| [prefer-to-contain][] | Suggest using `toContain()` | | ![fixable-green][] |
| [prefer-to-have-length][] | Suggest using `toHaveLength()` | | ![fixable-green][] |
| [prefer-inline-snapshots][] | Suggest using `toMatchInlineSnapshot()` | | ![fixable-green][] |
| [require-tothrow-message][] | Require that `toThrow()` and `toThrowError` includes a message | | |
| [require-to-throw-message][] | Require that `toThrow()` and `toThrowError` includes a message | | |
| [valid-describe][] | Enforce valid `describe()` callback | ![recommended][] | |
| [valid-expect-in-promise][] | Enforce having return statement when testing with promises | ![recommended][] | |
| [valid-expect][] | Enforce valid `expect()` usage | ![recommended][] | |
Expand Down Expand Up @@ -186,7 +186,7 @@ https://github.com/dangreenisrael/eslint-plugin-jest-formatting
[prefer-to-contain]: docs/rules/prefer-to-contain.md
[prefer-to-have-length]: docs/rules/prefer-to-have-length.md
[prefer-inline-snapshots]: docs/rules/prefer-inline-snapshots.md
[require-tothrow-message]: docs/rules/require-tothrow-message.md
[require-to-throw-message]: docs/rules/require-to-throw-message.md
[valid-describe]: docs/rules/valid-describe.md
[valid-expect-in-promise]: docs/rules/valid-expect-in-promise.md
[valid-expect]: docs/rules/valid-expect.md
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions src/rules/__tests__/require-tothrow-message.test.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { RuleTester } from 'eslint';
import rule from '../require-tothrow-message';
import rule from '../require-to-throw-message';

const ruleTester = new RuleTester({
parserOptions: {
ecmaVersion: 8,
},
});

ruleTester.run('require-tothrow-message', rule, {
ruleTester.run('require-to-throw-message', rule, {
valid: [
// String
"expect(() => { throw new Error('a'); }).toThrow('a');",
Expand Down
41 changes: 41 additions & 0 deletions src/rules/require-to-throw-message.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { argument, expectCase, getDocsUrl, method } from './util';

export default {
meta: {
docs: {
url: getDocsUrl(__filename),
},
messages: {
requireRethrow: 'Add an error message to {{ propertyName }}()',
},
schema: [],
},
create(context) {
return {
CallExpression(node) {
if (!expectCase(node)) {
return;
}

let targetNode = method(node);
if (targetNode.name === 'rejects') {
targetNode = method(node.parent);
}

const propertyName = method(targetNode) && method(targetNode).name;

// Look for `toThrow` calls with no arguments.
if (
['toThrow', 'toThrowError'].includes(propertyName) &&
!argument(targetNode)
) {
context.report({
messageId: 'requireRethrow',
data: { propertyName },
node: targetNode,
});
}
},
};
},
};
44 changes: 6 additions & 38 deletions src/rules/require-tothrow-message.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,9 @@
import { argument, expectCase, getDocsUrl, method } from './util';
import requireToThrowMessage from './require-to-throw-message';

export default {
meta: {
docs: {
url: getDocsUrl(__filename),
},
messages: {
requireRethrow: 'Add an error message to {{ propertyName }}()',
},
schema: [],
},
create(context) {
return {
CallExpression(node) {
if (!expectCase(node)) {
return;
}
const requireTothrowMessage = Object.assign({}, requireToThrowMessage);

let targetNode = method(node);
if (targetNode.name === 'rejects') {
targetNode = method(node.parent);
}
requireTothrowMessage.meta.deprecated = true;
requireTothrowMessage.meta.replacedBy = ['require-to-throw-message'];
requireTothrowMessage.meta.docs.replacedBy = ['require-to-throw-message'];

const propertyName = method(targetNode) && method(targetNode).name;

// Look for `toThrow` calls with no arguments.
if (
['toThrow', 'toThrowError'].includes(propertyName) &&
!argument(targetNode)
) {
context.report({
messageId: 'requireRethrow',
data: { propertyName },
node: targetNode,
});
}
},
};
},
};
export default requireTothrowMessage;

0 comments on commit e48fade

Please sign in to comment.