1
1
import { beforeEach , describe , expect , test , vi } from 'vitest'
2
2
import { transformCjsImport } from '../../plugins/importAnalysis'
3
3
4
- describe ( 'transformCjsImport' , ( ) => {
5
- const url = './node_modules/.vite/deps/react.js'
6
- const rawUrl = 'react'
4
+ describe ( 'runTransform' , ( ) => {
7
5
const config : any = {
8
6
command : 'serve' ,
9
7
logger : {
10
8
warn : vi . fn ( ) ,
11
9
} ,
12
10
}
13
11
12
+ function runTransformCjsImport ( importExp : string ) {
13
+ const result = transformCjsImport (
14
+ importExp ,
15
+ './node_modules/.vite/deps/react.js' ,
16
+ 'react' ,
17
+ 0 ,
18
+ 'modA' ,
19
+ config ,
20
+ )
21
+ if ( result !== undefined ) {
22
+ expect ( result . split ( '\n' ) . length , 'result line count' ) . toBe (
23
+ importExp . split ( '\n' ) . length ,
24
+ )
25
+ }
26
+ return result
27
+ }
28
+
14
29
beforeEach ( ( ) => {
15
30
config . logger . warn . mockClear ( )
16
31
} )
17
32
18
33
test ( 'import specifier' , ( ) => {
19
34
expect (
20
- transformCjsImport (
35
+ runTransformCjsImport (
21
36
'import { useState, Component, "👋" as fake } from "react"' ,
22
- url ,
23
- rawUrl ,
24
- 0 ,
25
- '' ,
26
- config ,
27
37
) ,
28
38
) . toBe (
29
39
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
@@ -34,90 +44,44 @@ describe('transformCjsImport', () => {
34
44
} )
35
45
36
46
test ( 'import default specifier' , ( ) => {
37
- expect (
38
- transformCjsImport (
39
- 'import React from "react"' ,
40
- url ,
41
- rawUrl ,
42
- 0 ,
43
- '' ,
44
- config ,
45
- ) ,
46
- ) . toBe (
47
+ expect ( runTransformCjsImport ( 'import React from "react"' ) ) . toBe (
47
48
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
48
49
'const React = __vite__cjsImport0_react.__esModule ? __vite__cjsImport0_react.default : __vite__cjsImport0_react' ,
49
50
)
50
51
51
52
expect (
52
- transformCjsImport (
53
- 'import { default as React } from "react"' ,
54
- url ,
55
- rawUrl ,
56
- 0 ,
57
- '' ,
58
- config ,
59
- ) ,
53
+ runTransformCjsImport ( 'import { default as React } from "react"' ) ,
60
54
) . toBe (
61
55
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
62
56
'const React = __vite__cjsImport0_react.__esModule ? __vite__cjsImport0_react.default : __vite__cjsImport0_react' ,
63
57
)
64
58
} )
65
59
66
60
test ( 'import all specifier' , ( ) => {
67
- expect (
68
- transformCjsImport (
69
- 'import * as react from "react"' ,
70
- url ,
71
- rawUrl ,
72
- 0 ,
73
- '' ,
74
- config ,
75
- ) ,
76
- ) . toBe (
61
+ expect ( runTransformCjsImport ( 'import * as react from "react"' ) ) . toBe (
77
62
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
78
- `const react = ((m) => m?.__esModule ? m : { ...typeof m === "object" && !Array.isArray(m) || typeof m === "function" ? m : {}, default: m })(__vite__cjsImport0_react)` ,
63
+ `const react = ((m) => m?.__esModule ? m : { ...typeof m === "object" && !Array.isArray(m) || typeof m === "function" ? m : {}, default: m})(__vite__cjsImport0_react)` ,
79
64
)
80
65
} )
81
66
82
67
test ( 'export all specifier' , ( ) => {
83
- expect (
84
- transformCjsImport (
85
- 'export * from "react"' ,
86
- url ,
87
- rawUrl ,
88
- 0 ,
89
- 'modA' ,
90
- config ,
91
- ) ,
92
- ) . toBe ( undefined )
68
+ expect ( runTransformCjsImport ( 'export * from "react"' ) ) . toBe ( undefined )
93
69
94
70
expect ( config . logger . warn ) . toBeCalledWith (
95
71
expect . stringContaining ( `export * from "react"\` in modA` ) ,
96
72
)
97
73
98
- expect (
99
- transformCjsImport (
100
- 'export * as react from "react"' ,
101
- url ,
102
- rawUrl ,
103
- 0 ,
104
- '' ,
105
- config ,
106
- ) ,
107
- ) . toBe ( undefined )
74
+ expect ( runTransformCjsImport ( 'export * as react from "react"' ) ) . toBe (
75
+ undefined ,
76
+ )
108
77
109
78
expect ( config . logger . warn ) . toBeCalledTimes ( 1 )
110
79
} )
111
80
112
81
test ( 'export name specifier' , ( ) => {
113
82
expect (
114
- transformCjsImport (
83
+ runTransformCjsImport (
115
84
'export { useState, Component, "👋" } from "react"' ,
116
- url ,
117
- rawUrl ,
118
- 0 ,
119
- '' ,
120
- config ,
121
85
) ,
122
86
) . toBe (
123
87
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
@@ -128,13 +92,8 @@ describe('transformCjsImport', () => {
128
92
)
129
93
130
94
expect (
131
- transformCjsImport (
95
+ runTransformCjsImport (
132
96
'export { useState as useStateAlias, Component as ComponentAlias, "👋" as "👍" } from "react"' ,
133
- url ,
134
- rawUrl ,
135
- 0 ,
136
- '' ,
137
- config ,
138
97
) ,
139
98
) . toBe (
140
99
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
@@ -146,45 +105,22 @@ describe('transformCjsImport', () => {
146
105
} )
147
106
148
107
test ( 'export default specifier' , ( ) => {
149
- expect (
150
- transformCjsImport (
151
- 'export { default } from "react"' ,
152
- url ,
153
- rawUrl ,
154
- 0 ,
155
- '' ,
156
- config ,
157
- ) ,
158
- ) . toBe (
108
+ expect ( runTransformCjsImport ( 'export { default } from "react"' ) ) . toBe (
159
109
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
160
110
'const __vite__cjsExportDefault_0 = __vite__cjsImport0_react.__esModule ? __vite__cjsImport0_react.default : __vite__cjsImport0_react; ' +
161
111
'export default __vite__cjsExportDefault_0' ,
162
112
)
163
113
164
114
expect (
165
- transformCjsImport (
166
- 'export { default as React} from "react"' ,
167
- url ,
168
- rawUrl ,
169
- 0 ,
170
- '' ,
171
- config ,
172
- ) ,
115
+ runTransformCjsImport ( 'export { default as React} from "react"' ) ,
173
116
) . toBe (
174
117
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
175
118
'const __vite__cjsExportI_React = __vite__cjsImport0_react.__esModule ? __vite__cjsImport0_react.default : __vite__cjsImport0_react; ' +
176
119
'export { __vite__cjsExportI_React as React }' ,
177
120
)
178
121
179
122
expect (
180
- transformCjsImport (
181
- 'export { Component as default } from "react"' ,
182
- url ,
183
- rawUrl ,
184
- 0 ,
185
- '' ,
186
- config ,
187
- ) ,
123
+ runTransformCjsImport ( 'export { Component as default } from "react"' ) ,
188
124
) . toBe (
189
125
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
190
126
'const __vite__cjsExportDefault_0 = __vite__cjsImport0_react["Component"]; ' +
0 commit comments