Skip to content

Commit d410ca3

Browse files
authored
prefer-number-properties: Fix suggestion description (#635)
1 parent 38f2456 commit d410ca3

File tree

2 files changed

+50
-47
lines changed

2 files changed

+50
-47
lines changed

rules/prefer-number-properties.js

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ const getDocumentationUrl = require('./utils/get-documentation-url');
33
const isShadowed = require('./utils/is-shadowed');
44
const renameIdentifier = require('./utils/rename-identifier');
55

6-
const methodMessageId = 'method';
7-
const propertyMessageId = 'property';
6+
const METHOD_ERROR_MESSAGE_ID = 'method-error';
7+
const METHOD_SUGGESTION_MESSAGE_ID = 'method-suggestion';
8+
const PROPERTY_ERROR_MESSAGE_ID = 'property-error';
89

910
const methods = {
1011
// Safe
@@ -50,7 +51,7 @@ const create = context => {
5051

5152
const problem = {
5253
node,
53-
messageId: methodMessageId,
54+
messageId: METHOD_ERROR_MESSAGE_ID,
5455
data: {
5556
name
5657
}
@@ -61,7 +62,15 @@ const create = context => {
6162
if (isSafe) {
6263
problem.fix = fix;
6364
} else {
64-
problem.suggest = [{messageId: methodMessageId, fix}];
65+
problem.suggest = [
66+
{
67+
messageId: METHOD_SUGGESTION_MESSAGE_ID,
68+
data: {
69+
name
70+
},
71+
fix
72+
}
73+
];
6574
}
6675

6776
context.report(problem);
@@ -89,7 +98,7 @@ const create = context => {
8998
const {name} = node;
9099
context.report({
91100
node,
92-
messageId: propertyMessageId,
101+
messageId: PROPERTY_ERROR_MESSAGE_ID,
93102
data: {
94103
name
95104
},
@@ -108,8 +117,9 @@ module.exports = {
108117
},
109118
fixable: 'code',
110119
messages: {
111-
[methodMessageId]: 'Prefer `Number.{{name}}()` over `{{name}}()`.',
112-
[propertyMessageId]: 'Prefer `Number.{{name}}` over `{{name}}`.'
120+
[METHOD_ERROR_MESSAGE_ID]: 'Prefer `Number.{{name}}()` over `{{name}}()`.',
121+
[METHOD_SUGGESTION_MESSAGE_ID]: 'Replace `{{name}}()` with `Number.{{name}}()`.',
122+
[PROPERTY_ERROR_MESSAGE_ID]: 'Prefer `Number.{{name}}` over `{{name}}`.'
113123
}
114124
}
115125
};

test/prefer-number-properties.js

Lines changed: 33 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import {outdent} from 'outdent';
44
import rule from '../rules/prefer-number-properties';
55

66
const ruleId = 'prefer-number-properties';
7-
const methodMessageId = 'method';
8-
const propertyMessageId = 'property';
7+
const METHOD_ERROR_MESSAGE_ID = 'method-error';
8+
const METHOD_SUGGESTION_MESSAGE_ID = 'method-suggestion';
9+
const PROPERTY_ERROR_MESSAGE_ID = 'property-error';
910

1011
const methods = {
1112
parseInt: {
@@ -36,20 +37,40 @@ const typescriptRuleTester = avaRuleTester(test, {
3637
parser: require.resolve('@typescript-eslint/parser')
3738
});
3839

39-
const invalidMethodTest = ({code, output, name}) => {
40-
const isSafe = methods[name].safe;
40+
const createError = name => {
41+
const {safe} = methods[name];
4142

4243
const error = {
43-
messageId: methodMessageId,
44+
messageId: METHOD_ERROR_MESSAGE_ID,
4445
data: {
4546
name
4647
}
4748
};
4849

50+
const suggestions = safe ? undefined : [
51+
{
52+
messageId: METHOD_SUGGESTION_MESSAGE_ID,
53+
data: {
54+
name
55+
}
56+
}
57+
];
58+
59+
return {
60+
...error,
61+
suggestions
62+
};
63+
};
64+
65+
const invalidMethodTest = ({code, output, name}) => {
66+
const {safe} = methods[name];
67+
4968
return {
5069
code,
51-
output: isSafe ? output : code,
52-
errors: isSafe ? [{...error, suggestions: undefined}] : [{suggestions: [error]}]
70+
output: safe ? output : code,
71+
errors: [
72+
createError(name)
73+
]
5374
};
5475
};
5576

@@ -117,38 +138,10 @@ ruleTester.run(ruleId, rule, {
117138
const d = isFinite(10);
118139
`,
119140
errors: [
120-
{
121-
messageId: methodMessageId,
122-
data: {
123-
name: 'parseInt'
124-
}
125-
},
126-
{
127-
messageId: methodMessageId,
128-
data: {
129-
name: 'parseFloat'
130-
}
131-
},
132-
{
133-
suggestions: [
134-
{
135-
messageId: methodMessageId,
136-
data: {
137-
name: 'isNaN'
138-
}
139-
}
140-
]
141-
},
142-
{
143-
suggestions: [
144-
{
145-
messageId: methodMessageId,
146-
data: {
147-
name: 'isFinite'
148-
}
149-
}
150-
]
151-
}
141+
createError('parseInt'),
142+
createError('parseFloat'),
143+
createError('isNaN'),
144+
createError('isFinite')
152145
]
153146
}
154147
]
@@ -157,7 +150,7 @@ ruleTester.run(ruleId, rule, {
157150
// NaN
158151
const errorNaN = [
159152
{
160-
messageId: propertyMessageId,
153+
messageId: PROPERTY_ERROR_MESSAGE_ID,
161154
data: {
162155
name: 'NaN'
163156
}

0 commit comments

Comments
 (0)