Skip to content

Commit ad53745

Browse files
committed
test: add v9 tests that was missed
1 parent 57366a2 commit ad53745

File tree

3 files changed

+373
-417
lines changed

3 files changed

+373
-417
lines changed
Lines changed: 69 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,51 @@
1-
import rule from '@next/eslint-plugin-next/dist/rules/no-async-client-component'
2-
import { RuleTester } from 'eslint'
3-
;(RuleTester as any).setDefaultConfig({
4-
parserOptions: {
5-
ecmaVersion: 2018,
6-
sourceType: 'module',
7-
ecmaFeatures: {
8-
modules: true,
9-
jsx: true,
10-
},
11-
},
12-
})
13-
const ruleTester = new RuleTester()
1+
import { RuleTester as ESLintTesterV8 } from 'eslint'
2+
import { RuleTester as ESLintTesterV9 } from 'eslint-v9'
3+
import { rules } from '@next/eslint-plugin-next'
4+
5+
const NextESLintRule = rules['no-async-client-component']
146

157
const message =
168
'Prevent client components from being async functions. See: https://nextjs.org/docs/messages/no-async-client-component'
179

18-
ruleTester.run('no-async-client-component single line', rule, {
10+
const tests = {
1911
valid: [
2012
`
2113
export default async function MyComponent() {
2214
return <></>
2315
}
2416
`,
17+
`
18+
"use client"
19+
20+
export default async function myFunction() {
21+
return ''
22+
}
23+
`,
24+
`
25+
async function MyComponent() {
26+
return <></>
27+
}
28+
29+
export default MyComponent
30+
`,
31+
`
32+
"use client"
33+
34+
async function myFunction() {
35+
return ''
36+
}
37+
38+
export default myFunction
39+
`,
40+
`
41+
"use client"
42+
43+
const myFunction = () => {
44+
return ''
45+
}
46+
47+
export default myFunction
48+
`,
2549
],
2650
invalid: [
2751
{
@@ -32,26 +56,8 @@ ruleTester.run('no-async-client-component single line', rule, {
3256
return <></>
3357
}
3458
`,
35-
errors: [
36-
{
37-
message,
38-
},
39-
],
59+
errors: [{ message }],
4060
},
41-
],
42-
})
43-
44-
ruleTester.run('no-async-client-component single line capitalization', rule, {
45-
valid: [
46-
`
47-
"use client"
48-
49-
export default async function myFunction() {
50-
return ''
51-
}
52-
`,
53-
],
54-
invalid: [
5561
{
5662
code: `
5763
"use client"
@@ -60,26 +66,8 @@ ruleTester.run('no-async-client-component single line capitalization', rule, {
6066
return ''
6167
}
6268
`,
63-
errors: [
64-
{
65-
message,
66-
},
67-
],
69+
errors: [{ message }],
6870
},
69-
],
70-
})
71-
72-
ruleTester.run('no-async-client-component multiple line', rule, {
73-
valid: [
74-
`
75-
async function MyComponent() {
76-
return <></>
77-
}
78-
79-
export default MyComponent
80-
`,
81-
],
82-
invalid: [
8371
{
8472
code: `
8573
"use client"
@@ -90,28 +78,8 @@ ruleTester.run('no-async-client-component multiple line', rule, {
9078
9179
export default MyComponent
9280
`,
93-
errors: [
94-
{
95-
message,
96-
},
97-
],
81+
errors: [{ message }],
9882
},
99-
],
100-
})
101-
102-
ruleTester.run('no-async-client-component multiple line capitalization', rule, {
103-
valid: [
104-
`
105-
"use client"
106-
107-
async function myFunction() {
108-
return ''
109-
}
110-
111-
export default myFunction
112-
`,
113-
],
114-
invalid: [
11583
{
11684
code: `
11785
"use client"
@@ -122,28 +90,8 @@ ruleTester.run('no-async-client-component multiple line capitalization', rule, {
12290
12391
export default MyFunction
12492
`,
125-
errors: [
126-
{
127-
message,
128-
},
129-
],
93+
errors: [{ message }],
13094
},
131-
],
132-
})
133-
134-
ruleTester.run('no-async-client-component arrow function', rule, {
135-
valid: [
136-
`
137-
"use client"
138-
139-
const myFunction = () => {
140-
return ''
141-
}
142-
143-
export default myFunction
144-
`,
145-
],
146-
invalid: [
14795
{
14896
code: `
14997
"use client"
@@ -154,11 +102,33 @@ ruleTester.run('no-async-client-component arrow function', rule, {
154102
155103
export default MyFunction
156104
`,
157-
errors: [
158-
{
159-
message,
160-
},
161-
],
105+
errors: [{ message }],
162106
},
163107
],
108+
}
109+
110+
describe('no-async-client-component single line', () => {
111+
new ESLintTesterV8({
112+
parserOptions: {
113+
ecmaVersion: 2018,
114+
sourceType: 'module',
115+
ecmaFeatures: {
116+
modules: true,
117+
jsx: true,
118+
},
119+
},
120+
}).run('eslint-v8', NextESLintRule, tests)
121+
122+
new ESLintTesterV9({
123+
languageOptions: {
124+
ecmaVersion: 2018,
125+
sourceType: 'module',
126+
parserOptions: {
127+
ecmaFeatures: {
128+
modules: true,
129+
jsx: true,
130+
},
131+
},
132+
},
133+
}).run('eslint-v9', NextESLintRule, tests)
164134
})

test/unit/eslint-plugin-next/no-head-element.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import rule from '@next/eslint-plugin-next/dist/rules/no-head-element'
21
import { RuleTester as ESLintTesterV8 } from 'eslint'
32
import { RuleTester as ESLintTesterV9 } from 'eslint-v9'
3+
import { rules } from '@next/eslint-plugin-next'
44

5-
const NextESLintRule = rule
5+
const NextESLintRule = rules['no-head-element']
66

77
const message =
88
'Do not use `<head>` element. Use `<Head />` from `next/head` instead. See: https://nextjs.org/docs/messages/no-head-element'

0 commit comments

Comments
 (0)