Skip to content

Commit e48fade

Browse files
committed
fix(require-tothrow-message): rename rule to require-to-throw-message
1 parent 3ee3874 commit e48fade

File tree

5 files changed

+51
-42
lines changed

5 files changed

+51
-42
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ installations requiring long-term consistency.
135135
| [prefer-to-contain][] | Suggest using `toContain()` | | ![fixable-green][] |
136136
| [prefer-to-have-length][] | Suggest using `toHaveLength()` | | ![fixable-green][] |
137137
| [prefer-inline-snapshots][] | Suggest using `toMatchInlineSnapshot()` | | ![fixable-green][] |
138-
| [require-tothrow-message][] | Require that `toThrow()` and `toThrowError` includes a message | | |
138+
| [require-to-throw-message][] | Require that `toThrow()` and `toThrowError` includes a message | | |
139139
| [valid-describe][] | Enforce valid `describe()` callback | ![recommended][] | |
140140
| [valid-expect-in-promise][] | Enforce having return statement when testing with promises | ![recommended][] | |
141141
| [valid-expect][] | Enforce valid `expect()` usage | ![recommended][] | |
@@ -186,7 +186,7 @@ https://github.com/dangreenisrael/eslint-plugin-jest-formatting
186186
[prefer-to-contain]: docs/rules/prefer-to-contain.md
187187
[prefer-to-have-length]: docs/rules/prefer-to-have-length.md
188188
[prefer-inline-snapshots]: docs/rules/prefer-inline-snapshots.md
189-
[require-tothrow-message]: docs/rules/require-tothrow-message.md
189+
[require-to-throw-message]: docs/rules/require-to-throw-message.md
190190
[valid-describe]: docs/rules/valid-describe.md
191191
[valid-expect-in-promise]: docs/rules/valid-expect-in-promise.md
192192
[valid-expect]: docs/rules/valid-expect.md

src/rules/__tests__/require-tothrow-message.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { RuleTester } from 'eslint';
2-
import rule from '../require-tothrow-message';
2+
import rule from '../require-to-throw-message';
33

44
const ruleTester = new RuleTester({
55
parserOptions: {
66
ecmaVersion: 8,
77
},
88
});
99

10-
ruleTester.run('require-tothrow-message', rule, {
10+
ruleTester.run('require-to-throw-message', rule, {
1111
valid: [
1212
// String
1313
"expect(() => { throw new Error('a'); }).toThrow('a');",

src/rules/require-to-throw-message.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { argument, expectCase, getDocsUrl, method } from './util';
2+
3+
export default {
4+
meta: {
5+
docs: {
6+
url: getDocsUrl(__filename),
7+
},
8+
messages: {
9+
requireRethrow: 'Add an error message to {{ propertyName }}()',
10+
},
11+
schema: [],
12+
},
13+
create(context) {
14+
return {
15+
CallExpression(node) {
16+
if (!expectCase(node)) {
17+
return;
18+
}
19+
20+
let targetNode = method(node);
21+
if (targetNode.name === 'rejects') {
22+
targetNode = method(node.parent);
23+
}
24+
25+
const propertyName = method(targetNode) && method(targetNode).name;
26+
27+
// Look for `toThrow` calls with no arguments.
28+
if (
29+
['toThrow', 'toThrowError'].includes(propertyName) &&
30+
!argument(targetNode)
31+
) {
32+
context.report({
33+
messageId: 'requireRethrow',
34+
data: { propertyName },
35+
node: targetNode,
36+
});
37+
}
38+
},
39+
};
40+
},
41+
};

src/rules/require-tothrow-message.js

Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,9 @@
1-
import { argument, expectCase, getDocsUrl, method } from './util';
1+
import requireToThrowMessage from './require-to-throw-message';
22

3-
export default {
4-
meta: {
5-
docs: {
6-
url: getDocsUrl(__filename),
7-
},
8-
messages: {
9-
requireRethrow: 'Add an error message to {{ propertyName }}()',
10-
},
11-
schema: [],
12-
},
13-
create(context) {
14-
return {
15-
CallExpression(node) {
16-
if (!expectCase(node)) {
17-
return;
18-
}
3+
const requireTothrowMessage = Object.assign({}, requireToThrowMessage);
194

20-
let targetNode = method(node);
21-
if (targetNode.name === 'rejects') {
22-
targetNode = method(node.parent);
23-
}
5+
requireTothrowMessage.meta.deprecated = true;
6+
requireTothrowMessage.meta.replacedBy = ['require-to-throw-message'];
7+
requireTothrowMessage.meta.docs.replacedBy = ['require-to-throw-message'];
248

25-
const propertyName = method(targetNode) && method(targetNode).name;
26-
27-
// Look for `toThrow` calls with no arguments.
28-
if (
29-
['toThrow', 'toThrowError'].includes(propertyName) &&
30-
!argument(targetNode)
31-
) {
32-
context.report({
33-
messageId: 'requireRethrow',
34-
data: { propertyName },
35-
node: targetNode,
36-
});
37-
}
38-
},
39-
};
40-
},
41-
};
9+
export default requireTothrowMessage;

0 commit comments

Comments
 (0)