Skip to content

Commit c00ac9a

Browse files
committed
fixup! [New] Symmetric useState hook variable names
1 parent 11d533f commit c00ac9a

File tree

2 files changed

+81
-83
lines changed

2 files changed

+81
-83
lines changed

lib/rules/hook-use-state.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ module.exports = {
1919
description: 'Ensure symmetric naming of useState hook value and setter variables',
2020
category: 'Best Practices',
2121
recommended: false,
22-
url: docsUrl('hook-use-state')
22+
url: docsUrl('hook-use-state'),
2323
},
2424
fixable: 'code',
2525
messages: {
26-
[USE_STATE_ERROR_MESSAGE]: 'setState call is not destructured into value + setter pair'
26+
[USE_STATE_ERROR_MESSAGE]: 'setState call is not destructured into value + setter pair',
2727
},
2828
schema: [{
2929
type: 'object',
30-
additionalProperties: false
31-
}]
30+
additionalProperties: false,
31+
}],
3232
},
3333

3434
create(context) {
@@ -63,7 +63,7 @@ module.exports = {
6363
);
6464

6565
if (!isDestructuringDeclarator) {
66-
context.report({node, messageId: USE_STATE_ERROR_MESSAGE});
66+
context.report({ node, messageId: USE_STATE_ERROR_MESSAGE });
6767
return;
6868
}
6969

@@ -97,7 +97,7 @@ module.exports = {
9797
fix: valueVariableName ? (fixer) => fixer.replaceTextRange(
9898
[node.parent.id.range[0], node.parent.id.range[1]],
9999
`[${valueVariableName}, ${expectedSetterVariableName}]`
100-
) : undefined
100+
) : undefined,
101101
});
102102
}
103103
},
@@ -118,7 +118,7 @@ module.exports = {
118118
reactUseStateLocalName = reactUseStateSpecifier
119119
? reactUseStateSpecifier.local.name
120120
: undefined;
121-
}
121+
},
122122
};
123-
}
123+
},
124124
};

tests/lib/rules/hook-use-state.js

Lines changed: 73 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -20,208 +20,206 @@ const parsers = require('../../helpers/parsers');
2020
const ruleTester = new RuleTester({
2121
parserOptions: {
2222
ecmaVersion: 2018,
23-
sourceType: 'module'
24-
}
23+
sourceType: 'module',
24+
},
2525
});
2626

2727
const tests = {
28-
valid: [
28+
valid: parsers.all([
2929
{
3030
code: `import { useState } from 'react';
31-
const [color, setColor] = useState()`
31+
const [color, setColor] = useState()`,
3232
},
3333
{
3434
code: `import { useState } from 'react';
35-
const [color, setColor] = useState('#ffffff')`
35+
const [color, setColor] = useState('#ffffff')`,
3636
},
3737
{
3838
code: `import { useState } from 'react';
39-
const [color, setColor] = React.useState()`
39+
const [color, setColor] = React.useState()`,
4040
},
4141
{
4242
code: `import { useState } from 'react';
43-
const [color1, setColor1] = useState()`
43+
const [color1, setColor1] = useState()`,
4444
},
4545
{
46-
code: 'const result = useState()'
46+
code: 'const result = useState()',
4747
},
4848
{
49-
code: `import { useRef } from 'react';
50-
const result = useState()`
49+
code: 'const [color, setFlavor] = useState()',
5150
},
5251
{
53-
code: 'const result = React.useState()'
52+
code: `import { useRef } from 'react';
53+
const result = useState()`,
5454
},
5555
{
56-
code: `import { useState } from 'react';
57-
const [color, setColor] = useState<string>()`,
58-
parser: parsers.TYPESCRIPT_ESLINT
56+
code: 'const result = React.useState()',
5957
},
60-
{
61-
code: `import { useState } from 'react';
62-
const [color, setColor] = useState<string>('#ffffff')`,
63-
parser: parsers.TYPESCRIPT_ESLINT
64-
}
65-
].concat(parsers.TS([
6658
{
6759
code: `import { useState } from 'react';
6860
const [color, setColor] = useState<string>()`,
69-
parser: parsers['@TYPESCRIPT_ESLINT']
61+
features: ['ts'],
7062
},
7163
{
7264
code: `import { useState } from 'react';
7365
const [color, setColor] = useState<string>('#ffffff')`,
74-
parser: parsers['@TYPESCRIPT_ESLINT']
75-
}
76-
])
77-
),
78-
invalid: [
66+
features: ['ts'],
67+
},
68+
]),
69+
invalid: parsers.all([
7970
{
8071
code: `import { useState } from 'react';
8172
useState()`,
8273
errors: [{
83-
message: 'setState call is not destructured into value + setter pair'
84-
}]
74+
message: 'setState call is not destructured into value + setter pair',
75+
}],
8576
},
8677
{
8778
code: `import { useState as useStateAlternativeName } from 'react';
8879
useStateAlternativeName()`,
8980
errors: [{
90-
message: 'setState call is not destructured into value + setter pair'
91-
}]
81+
message: 'setState call is not destructured into value + setter pair',
82+
}],
9283
},
9384
{
9485
code: `import React from 'react';
9586
const result = React.useState()`,
9687
errors: [{
97-
message: 'setState call is not destructured into value + setter pair'
98-
}]
88+
message: 'setState call is not destructured into value + setter pair',
89+
}],
9990
},
10091
{
10192
code: `import ReactAlternative from 'react';
10293
ReactAlternative.useState()`,
10394
errors: [{
104-
message: 'setState call is not destructured into value + setter pair'
105-
}]
95+
message: 'setState call is not destructured into value + setter pair',
96+
}],
10697
},
10798
{
10899
code: `import { useState } from 'react';
109100
const result = useState()`,
110101
errors: [{
111-
message: 'setState call is not destructured into value + setter pair'
112-
}]
102+
message: 'setState call is not destructured into value + setter pair',
103+
}],
113104
},
114105
{
115106
code: `import { useState } from 'react';
116107
const [, , extra1] = useState()`,
117108
errors: [{
118-
message: 'setState call is not destructured into value + setter pair'
119-
}]
109+
message: 'setState call is not destructured into value + setter pair',
110+
}],
120111
},
121112
{
122113
code: `import { useState } from 'react';
123114
const [, setColor] = useState()`,
124115
errors: [{
125-
message: 'setState call is not destructured into value + setter pair'
126-
}]
116+
message: 'setState call is not destructured into value + setter pair',
117+
}],
127118
},
128119
{
129120
code: `import { useState } from 'react';
130121
const { color } = useState()`,
131122
errors: [{
132-
message: 'setState call is not destructured into value + setter pair'
133-
}]
123+
message: 'setState call is not destructured into value + setter pair',
124+
}],
134125
},
135126
{
136127
code: `import { useState } from 'react';
137128
const [] = useState()`,
138129
errors: [{
139-
message: 'setState call is not destructured into value + setter pair'
140-
}]
130+
message: 'setState call is not destructured into value + setter pair',
131+
}],
141132
},
142133
{
143134
code: `import { useState } from 'react';
144135
const [, , , ,] = useState()`,
145136
errors: [{
146-
message: 'setState call is not destructured into value + setter pair'
147-
}]
137+
message: 'setState call is not destructured into value + setter pair',
138+
}],
148139
},
149140
{
150141
code: `import { useState } from 'react';
151142
const [color] = useState()`,
152143
errors: [{
153-
message: 'setState call is not destructured into value + setter pair'
144+
message: 'setState call is not destructured into value + setter pair',
154145
}],
155146
output: `import { useState } from 'react';
156-
const [color, setColor] = useState()`
147+
const [color, setColor] = useState()`,
157148
},
158149
{
159150
code: `import { useState } from 'react';
160151
const [color, , extra1] = useState()`,
161152
errors: [{
162-
message: 'setState call is not destructured into value + setter pair'
153+
message: 'setState call is not destructured into value + setter pair',
163154
}],
164155
output: `import { useState } from 'react';
165-
const [color, setColor] = useState()`
156+
const [color, setColor] = useState()`,
166157
},
167158
{
168159
code: `import { useState } from 'react';
169160
const [color, setColor, extra1, extra2, extra3] = useState()`,
170161
errors: [{
171-
message: 'setState call is not destructured into value + setter pair'
162+
message: 'setState call is not destructured into value + setter pair',
172163
}],
173164
output: `import { useState } from 'react';
174-
const [color, setColor] = useState()`
165+
const [color, setColor] = useState()`,
175166
},
176167
{
177168
code: `import { useState } from 'react';
178169
const [, makeColor] = useState()`,
179170
errors: [{
180-
message: 'setState call is not destructured into value + setter pair'
181-
}]
171+
message: 'setState call is not destructured into value + setter pair',
172+
}],
182173
},
183174
{
184175
code: `import { useState } from 'react';
185176
const [color, setFlavor, extraneous] = useState()`,
186177
errors: [{
187-
message: 'setState call is not destructured into value + setter pair'
178+
message: 'setState call is not destructured into value + setter pair',
188179
}],
189180
output: `import { useState } from 'react';
190-
const [color, setColor] = useState()`
181+
const [color, setColor] = useState()`,
191182
},
192183
{
193184
code: `import { useState } from 'react';
194185
const [color, setFlavor] = useState()`,
195186
errors: [{
196-
message: 'setState call is not destructured into value + setter pair'
187+
message: 'setState call is not destructured into value + setter pair',
197188
}],
198189
output: `import { useState } from 'react';
199-
const [color, setColor] = useState()`
190+
const [color, setColor] = useState()`,
200191
},
201192
{
202193
code: `import { useState } from 'react';
203194
const [color, setFlavor] = useState<string>()`,
204195
errors: [{
205-
message: 'setState call is not destructured into value + setter pair'
196+
message: 'setState call is not destructured into value + setter pair',
206197
}],
207198
output: `import { useState } from 'react';
208199
const [color, setColor] = useState<string>()`,
209-
parser: parsers.TYPESCRIPT_ESLINT
210-
}
211-
].concat(
212-
parsers.TS([
213-
{
214-
code: `import { useState } from 'react';
215-
const [color, setFlavor] = useState<string>()`,
216-
errors: [{
217-
message: 'setState call is not destructured into value + setter pair'
218-
}],
219-
output: `import { useState } from 'react';
220-
const [color, setColor] = useState<string>()`,
221-
parser: parsers['@TYPESCRIPT_ESLINT']
222-
}
223-
])
224-
)
200+
features: ['ts'],
201+
},
202+
{
203+
code: `import { useState } from 'react';
204+
const [color, setFlavor] = useState<string>('#ffffff')`,
205+
errors: [{
206+
message: 'setState call is not destructured into value + setter pair',
207+
}],
208+
output: `import { useState } from 'react';
209+
const [color, setColor] = useState<string>('#ffffff')`,
210+
features: ['ts'],
211+
},
212+
{
213+
code: `import React from 'react';
214+
const [color, setFlavor] = React.useState<string>('#ffffff')`,
215+
errors: [{
216+
message: 'setState call is not destructured into value + setter pair',
217+
}],
218+
output: `import React from 'react';
219+
const [color, setColor] = React.useState<string>('#ffffff')`,
220+
features: ['ts'],
221+
},
222+
]),
225223
};
226224

227225
ruleTester.run('hook-set-state-names', rule, tests);

0 commit comments

Comments
 (0)