@@ -9,35 +9,44 @@ describe('findStaticPlugins', () => {
9
9
expect (
10
10
findStaticPlugins ( js `
11
11
import plugin1 from './plugin1'
12
- import * as plugin2 from './plugin2'
13
12
14
13
export default {
15
- plugins: [plugin1, plugin2, 'plugin3' , require('./plugin4 ')]
14
+ plugins: [plugin1, ' plugin2' , require('./plugin3 ')]
16
15
}
17
16
` ) ,
18
- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
17
+ ) . toEqual ( [
18
+ [ './plugin1' , null ] ,
19
+ [ 'plugin2' , null ] ,
20
+ [ './plugin3' , null ] ,
21
+ ] )
19
22
20
23
expect (
21
24
findStaticPlugins ( js `
22
25
import plugin1 from './plugin1'
23
- import * as plugin2 from './plugin2'
24
26
25
27
export default {
26
- plugins: [plugin1, plugin2, 'plugin3' , require('./plugin4 ')]
28
+ plugins: [plugin1, ' plugin2' , require('./plugin3 ')]
27
29
} as any
28
30
` ) ,
29
- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
31
+ ) . toEqual ( [
32
+ [ './plugin1' , null ] ,
33
+ [ 'plugin2' , null ] ,
34
+ [ './plugin3' , null ] ,
35
+ ] )
30
36
31
37
expect (
32
38
findStaticPlugins ( js `
33
39
import plugin1 from './plugin1'
34
- import * as plugin2 from './plugin2'
35
40
36
41
export default {
37
- plugins: [plugin1, plugin2, 'plugin3' , require('./plugin4 ')]
42
+ plugins: [plugin1, ' plugin2' , require('./plugin3 ')]
38
43
} satisfies any
39
44
` ) ,
40
- ) . toEqual ( [ './plugin1' , './plugin2' , 'plugin3' , './plugin4' ] )
45
+ ) . toEqual ( [
46
+ [ './plugin1' , null ] ,
47
+ [ 'plugin2' , null ] ,
48
+ [ './plugin3' , null ] ,
49
+ ] )
41
50
42
51
expect (
43
52
findStaticPlugins ( js `
@@ -47,7 +56,11 @@ describe('findStaticPlugins', () => {
47
56
plugins: [plugin1, 'plugin2', require('./plugin3')]
48
57
} as any
49
58
` ) ,
50
- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
59
+ ) . toEqual ( [
60
+ [ './plugin1' , null ] ,
61
+ [ 'plugin2' , null ] ,
62
+ [ './plugin3' , null ] ,
63
+ ] )
51
64
52
65
expect (
53
66
findStaticPlugins ( js `
@@ -57,7 +70,11 @@ describe('findStaticPlugins', () => {
57
70
plugins: [plugin1, 'plugin2', require('./plugin3')]
58
71
} satisfies any
59
72
` ) ,
60
- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
73
+ ) . toEqual ( [
74
+ [ './plugin1' , null ] ,
75
+ [ 'plugin2' , null ] ,
76
+ [ './plugin3' , null ] ,
77
+ ] )
61
78
62
79
expect (
63
80
findStaticPlugins ( js `
@@ -67,68 +84,204 @@ describe('findStaticPlugins', () => {
67
84
plugins: [plugin1, 'plugin2', require('./plugin3')]
68
85
}
69
86
` ) ,
70
- ) . toEqual ( [ './plugin1' , 'plugin2' , './plugin3' ] )
87
+ ) . toEqual ( [
88
+ [ './plugin1' , null ] ,
89
+ [ 'plugin2' , null ] ,
90
+ [ './plugin3' , null ] ,
91
+ ] )
71
92
} )
72
93
73
- test ( 'bails out on inline plugins ' , ( ) => {
94
+ test ( 'can extract plugin options ' , ( ) => {
74
95
expect (
75
96
findStaticPlugins ( js `
76
- import plugin1 from './plugin1'
97
+ import plugin1 from './plugin1'
98
+ import plugin2 from './plugin2'
77
99
78
- export default {
79
- plugins: [plugin1, () => {} ]
80
- }
100
+ export default {
101
+ plugins: [
102
+ plugin1({
103
+ foo: 'bar',
104
+ }),
105
+ plugin2(),
106
+ require('./plugin3')({
107
+ foo: 'bar',
108
+ }),
109
+ ]
110
+ }
81
111
` ) ,
82
- ) . toEqual ( null )
112
+ ) . toEqual ( [
113
+ [ './plugin1' , { foo : 'bar' } ] ,
114
+ [ './plugin2' , null ] ,
115
+ [ './plugin3' , { foo : 'bar' } ] ,
116
+ ] )
117
+ } )
83
118
119
+ test ( 'can extract all supported data types' , ( ) => {
84
120
expect (
85
121
findStaticPlugins ( js `
86
- let plugin1 = () => {}
122
+ import plugin from 'plugin'
87
123
88
- export default {
89
- plugins: [plugin1]
90
- }
124
+ export default {
125
+ plugins: [
126
+ plugin({
127
+ 'is-arr-mixed': [null, true, false, 1234567, 1.35, 'foo', 'bar', 'true'],
128
+ 'is-arr': ['foo', 'bar'],
129
+ 'is-null': null,
130
+ 'is-true': true,
131
+ 'is-false': false,
132
+ 'is-int': 1234567,
133
+ 'is-float': 1.35,
134
+ 'is-sci': 1.35e-5,
135
+ 'is-str-null': 'null',
136
+ 'is-str-true': 'true',
137
+ 'is-str-false': 'false',
138
+ 'is-str-int': '1234567',
139
+ 'is-str-float': '1.35',
140
+ 'is-str-sci': '1.35e-5',
141
+ }),
142
+ ]
143
+ }
91
144
` ) ,
145
+ ) . toEqual ( [
146
+ [
147
+ 'plugin' ,
148
+ {
149
+ 'is-arr-mixed' : [ null , true , false , 1234567 , 1.35 , 'foo' , 'bar' , 'true' ] ,
150
+ 'is-arr' : [ 'foo' , 'bar' ] ,
151
+ 'is-null' : null ,
152
+ 'is-true' : true ,
153
+ 'is-false' : false ,
154
+ 'is-int' : 1234567 ,
155
+ 'is-float' : 1.35 ,
156
+ 'is-sci' : 1.35e-5 ,
157
+ 'is-str-null' : 'null' ,
158
+ 'is-str-true' : 'true' ,
159
+ 'is-str-false' : 'false' ,
160
+ 'is-str-int' : '1234567' ,
161
+ 'is-str-float' : '1.35' ,
162
+ 'is-str-sci' : '1.35e-5' ,
163
+ } ,
164
+ ] ,
165
+ ] )
166
+ } )
167
+
168
+ test ( 'bails out on import * as import' , ( ) => {
169
+ expect (
170
+ findStaticPlugins ( js `
171
+ import * as plugin from './plugin'
172
+
173
+ export default {
174
+ plugins: [plugin]
175
+ }
176
+ ` ) ,
177
+ ) . toEqual ( null )
178
+ } )
179
+
180
+ test ( 'bails out on inline plugins' , ( ) => {
181
+ expect (
182
+ findStaticPlugins ( js `
183
+ import plugin1 from './plugin1'
184
+
185
+ export default {
186
+ plugins: [plugin1, () => {} ]
187
+ }
188
+ ` ) ,
189
+ ) . toEqual ( null )
190
+
191
+ expect (
192
+ findStaticPlugins ( js `
193
+ let plugin1 = () => {}
194
+
195
+ export default {
196
+ plugins: [plugin1]
197
+ }
198
+ ` ) ,
92
199
) . toEqual ( null )
93
200
} )
94
201
95
202
test ( 'bails out on non `require` calls' , ( ) => {
96
203
expect (
97
204
findStaticPlugins ( js `
98
- export default {
99
- plugins: [frequire ('./plugin1')]
100
- }
101
- ` ) ,
205
+ export default {
206
+ plugins: [falserequire ('./plugin1')]
207
+ }
208
+ ` ) ,
102
209
) . toEqual ( null )
103
210
} )
104
211
105
212
test ( 'bails out on named imports for plugins' , ( ) => {
106
213
expect (
107
214
findStaticPlugins ( js `
108
- import {plugin1} from './plugin1'
215
+ import {plugin1} from './plugin1'
109
216
110
- export default {
111
- plugins: [plugin1]
112
- }
113
- ` ) ,
217
+ export default {
218
+ plugins: [plugin1]
219
+ }
220
+ ` ) ,
114
221
) . toEqual ( null )
115
222
} )
116
223
117
- test ( 'bails for plugins with options' , ( ) => {
224
+ test ( 'bails on invalid plugin options' , ( ) => {
118
225
expect (
119
226
findStaticPlugins ( js `
120
- import plugin1 from './plugin1'
227
+ import plugin from './plugin'
228
+
229
+ export default {
230
+ plugins: [
231
+ plugin({ foo }),
232
+ ]
233
+ }
234
+ ` ) ,
235
+ ) . toEqual ( null )
236
+
237
+ expect (
238
+ findStaticPlugins ( js `
239
+ import plugin from './plugin'
240
+
241
+ export default {
242
+ plugins: [
243
+ plugin({ foo: { bar: 2 } }),
244
+ ]
245
+ }
246
+ ` ) ,
247
+ ) . toEqual ( null )
248
+
249
+ expect (
250
+ findStaticPlugins ( js `
251
+ import plugin from './plugin'
252
+
253
+ export default {
254
+ plugins: [
255
+ plugin({ foo: ${ '`bar${""}`' } }),
256
+ ]
257
+ }
258
+ ` ) ,
259
+ ) . toEqual ( null )
260
+
261
+ expect (
262
+ findStaticPlugins ( js `
263
+ import plugin from './plugin'
264
+
265
+ const OPTIONS = { foo: 1 }
121
266
122
267
export default {
123
- plugins: [plugin1({foo:'bar'})]
268
+ plugins: [
269
+ plugin(OPTIONS),
270
+ ]
124
271
}
125
272
` ) ,
126
273
) . toEqual ( null )
127
274
128
275
expect (
129
276
findStaticPlugins ( js `
277
+ import plugin from './plugin'
278
+
279
+ let something = 1
280
+
130
281
export default {
131
- plugins: [require('@tailwindcss/typography')({foo:'bar'})]
282
+ plugins: [
283
+ plugin({ foo: something }),
284
+ ]
132
285
}
133
286
` ) ,
134
287
) . toEqual ( null )
@@ -137,16 +290,16 @@ describe('findStaticPlugins', () => {
137
290
test ( 'returns no plugins if none are exported' , ( ) => {
138
291
expect (
139
292
findStaticPlugins ( js `
140
- export default {
141
- plugins: []
142
- }
143
- ` ) ,
293
+ export default {
294
+ plugins: []
295
+ }
296
+ ` ) ,
144
297
) . toEqual ( [ ] )
145
298
146
299
expect (
147
300
findStaticPlugins ( js `
148
- export default {}
149
- ` ) ,
301
+ export default {}
302
+ ` ) ,
150
303
) . toEqual ( [ ] )
151
304
} )
152
305
} )
0 commit comments