Skip to content

Commit 9453949

Browse files
authored
test: add suggestions to no-unused-vars tests (#2650)
1 parent 3bae67f commit 9453949

File tree

3 files changed

+181
-13
lines changed

3 files changed

+181
-13
lines changed

Diff for: tests/lib/rules/jsx-uses-vars.js

+38-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
*/
55
'use strict'
66

7-
const eslint = require('../../eslint-compat')
7+
const semver = require('semver')
8+
const { RuleTester, ESLint } = require('../../eslint-compat')
89
const rule = require('../../../lib/rules/jsx-uses-vars')
910
const { getCoreRule } = require('../../../lib/utils')
1011
const ruleNoUnusedVars = getCoreRule('no-unused-vars')
1112

12-
const RuleTester = eslint.RuleTester
1313
const ruleTester = new RuleTester({
1414
languageOptions: {
1515
ecmaVersion: 6,
@@ -108,7 +108,23 @@ describe('jsx-uses-vars', () => {
108108
`,
109109
errors: [
110110
{
111-
message: "'SomeComponent' is defined but never used."
111+
message: "'SomeComponent' is defined but never used.",
112+
suggestions: semver.gte(ESLint.version, '9.17.0')
113+
? [
114+
{
115+
desc: "Remove unused variable 'SomeComponent'.",
116+
output: `
117+
/* eslint vue/jsx-uses-vars: 1 */
118+
import './SomeComponent.jsx';
119+
export default {
120+
render () {
121+
return <div></div>;
122+
},
123+
};
124+
`
125+
}
126+
]
127+
: null
112128
}
113129
]
114130
},
@@ -128,7 +144,25 @@ describe('jsx-uses-vars', () => {
128144
`,
129145
errors: [
130146
{
131-
message: "'wrapper' is assigned a value but never used."
147+
message: "'wrapper' is assigned a value but never used.",
148+
suggestions: semver.gte(ESLint.version, '9.17.0')
149+
? [
150+
{
151+
desc: "Remove unused variable 'wrapper'.",
152+
output: `
153+
/* eslint vue/jsx-uses-vars: 1 */
154+
import SomeComponent from './SomeComponent.jsx';
155+
156+
157+
export default {
158+
render () {
159+
return <div></div>;
160+
},
161+
};
162+
`
163+
}
164+
]
165+
: null
132166
}
133167
]
134168
}

Diff for: tests/lib/rules/script-setup-uses-vars.js

+73-5
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
*/
66
'use strict'
77

8-
const eslint = require('../../eslint-compat')
8+
const semver = require('semver')
9+
const { RuleTester, ESLint } = require('../../eslint-compat')
910
const rule = require('../../../lib/rules/script-setup-uses-vars')
1011
const { getCoreRule } = require('../../../lib/utils')
1112
const ruleNoUnusedVars = getCoreRule('no-unused-vars')
1213

13-
const RuleTester = eslint.RuleTester
1414
const ruleTester = new RuleTester({
1515
languageOptions: {
1616
parser: require('vue-eslint-parser'),
@@ -260,7 +260,39 @@ describe('script-setup-uses-vars', () => {
260260
errors: [
261261
{
262262
message: "'Bar' is defined but never used.",
263-
line: 6
263+
line: 6,
264+
suggestions: semver.gte(ESLint.version, '9.17.0')
265+
? [
266+
{
267+
desc: "Remove unused variable 'Bar'.",
268+
output: `
269+
<script setup>
270+
/* eslint vue/script-setup-uses-vars: 1 */
271+
// imported components are also directly usable in template
272+
import Foo from './Foo.vue'
273+
import './Bar.vue'
274+
import { ref } from 'vue'
275+
276+
// write Composition API code just like in a normal setup()
277+
// but no need to manually return everything
278+
const count = ref(0)
279+
const inc = () => {
280+
count.value++
281+
}
282+
const foo = ref(42)
283+
console.log(foo.value)
284+
const bar = ref(42)
285+
bar.value++
286+
const baz = ref(42)
287+
</script>
288+
289+
<template>
290+
<Foo :count="count" @click="inc" />
291+
</template>
292+
`
293+
}
294+
]
295+
: null
264296
},
265297
{
266298
message: "'baz' is assigned a value but never used.",
@@ -285,7 +317,24 @@ describe('script-setup-uses-vars', () => {
285317
errors: [
286318
{
287319
message: "'camelCase' is defined but never used.",
288-
line: 4
320+
line: 4,
321+
suggestions: semver.gte(ESLint.version, '9.17.0')
322+
? [
323+
{
324+
desc: "Remove unused variable 'camelCase'.",
325+
output: `
326+
<script setup>
327+
/* eslint vue/script-setup-uses-vars: 1 */
328+
import './component.vue'
329+
</script>
330+
331+
<template>
332+
<CamelCase />
333+
</template>
334+
`
335+
}
336+
]
337+
: null
289338
}
290339
]
291340
},
@@ -308,7 +357,26 @@ describe('script-setup-uses-vars', () => {
308357
errors: [
309358
{
310359
message: "'msg' is assigned a value but never used.",
311-
line: 5
360+
line: 5,
361+
suggestions: semver.gte(ESLint.version, '9.17.0')
362+
? [
363+
{
364+
desc: "Remove unused variable 'msg'.",
365+
output: `
366+
<script setup>
367+
/* eslint vue/script-setup-uses-vars: 1 */
368+
if (a) {
369+
370+
}
371+
</script>
372+
373+
<template>
374+
<div>{{ msg }}</div>
375+
</template>
376+
`
377+
}
378+
]
379+
: null
312380
}
313381
]
314382
},

Diff for: tests/lib/script-setup-vars.js

+70-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'
22

3-
const { RuleTester } = require('../eslint-compat')
3+
const semver = require('semver')
4+
const { RuleTester, ESLint } = require('../eslint-compat')
45
const { getCoreRule } = require('../../lib/utils')
56
const ruleNoUnusedVars = getCoreRule('no-unused-vars')
67
const ruleNoUndef = getCoreRule('no-undef')
@@ -220,7 +221,38 @@ describe('vue-eslint-parser should properly mark the variables used in the templ
220221
errors: [
221222
{
222223
message: "'Bar' is defined but never used.",
223-
line: 5
224+
line: 5,
225+
suggestions: semver.gte(ESLint.version, '9.17.0')
226+
? [
227+
{
228+
desc: "Remove unused variable 'Bar'.",
229+
output: `
230+
<script setup>
231+
// imported components are also directly usable in template
232+
import Foo from './Foo.vue'
233+
import './Bar.vue'
234+
import { ref } from 'vue'
235+
236+
// write Composition API code just like in a normal setup()
237+
// but no need to manually return everything
238+
const count = ref(0)
239+
const inc = () => {
240+
count.value++
241+
}
242+
const foo = ref(42)
243+
console.log(foo.value)
244+
const bar = ref(42)
245+
bar.value++
246+
const baz = ref(42)
247+
</script>
248+
249+
<template>
250+
<Foo :count="count" @click="inc" />
251+
</template>
252+
`
253+
}
254+
]
255+
: null
224256
},
225257
{
226258
message: "'baz' is assigned a value but never used.",
@@ -244,7 +276,23 @@ describe('vue-eslint-parser should properly mark the variables used in the templ
244276
errors: [
245277
{
246278
message: "'camelCase' is defined but never used.",
247-
line: 3
279+
line: 3,
280+
suggestions: semver.gte(ESLint.version, '9.17.0')
281+
? [
282+
{
283+
desc: "Remove unused variable 'camelCase'.",
284+
output: `
285+
<script setup>
286+
import './component.vue'
287+
</script>
288+
289+
<template>
290+
<CamelCase />
291+
</template>
292+
`
293+
}
294+
]
295+
: null
248296
}
249297
]
250298
},
@@ -266,7 +314,25 @@ describe('vue-eslint-parser should properly mark the variables used in the templ
266314
errors: [
267315
{
268316
message: "'msg' is assigned a value but never used.",
269-
line: 4
317+
line: 4,
318+
suggestions: semver.gte(ESLint.version, '9.17.0')
319+
? [
320+
{
321+
desc: "Remove unused variable 'msg'.",
322+
output: `
323+
<script setup>
324+
if (a) {
325+
326+
}
327+
</script>
328+
329+
<template>
330+
<div>{{ msg }}</div>
331+
</template>
332+
`
333+
}
334+
]
335+
: null
270336
}
271337
]
272338
},

0 commit comments

Comments
 (0)