@@ -3,30 +3,36 @@ import stats from '../__fixtures__/stats.json'
3
3
import ChunkExtractor from './ChunkExtractor'
4
4
5
5
describe ( 'ChunkExtrator' , ( ) => {
6
+ let extractor
7
+
8
+ beforeEach ( ( ) => {
9
+ extractor = new ChunkExtractor ( {
10
+ stats,
11
+ outputPath : path . resolve ( __dirname , '../__fixtures__' ) ,
12
+ } )
13
+ } )
14
+
6
15
describe ( '#stats' , ( ) => {
7
16
it ( 'should load stats from file' , ( ) => {
8
- const extractor = new ChunkExtractor ( {
17
+ extractor = new ChunkExtractor ( {
9
18
statsFile : path . resolve ( __dirname , '../__fixtures__/stats.json' ) ,
10
19
} )
11
20
12
21
expect ( extractor . stats ) . toBe ( stats )
13
22
} )
14
23
15
24
it ( 'should load stats from stats' , ( ) => {
16
- const extractor = new ChunkExtractor ( { stats } )
17
25
expect ( extractor . stats ) . toBe ( stats )
18
26
} )
19
27
} )
20
28
21
29
describe ( '#addChunk' , ( ) => {
22
30
it ( 'should reference chunk' , ( ) => {
23
- const extractor = new ChunkExtractor ( { stats } )
24
31
extractor . addChunk ( 'foo' )
25
32
expect ( extractor . chunks ) . toEqual ( [ 'foo' ] )
26
33
} )
27
34
28
35
it ( 'should be uniq' , ( ) => {
29
- const extractor = new ChunkExtractor ( { stats } )
30
36
extractor . addChunk ( 'a' )
31
37
extractor . addChunk ( 'b' )
32
38
extractor . addChunk ( 'b' )
@@ -36,15 +42,13 @@ describe('ChunkExtrator', () => {
36
42
37
43
describe ( '#getScriptTags' , ( ) => {
38
44
it ( 'should return main script tag without chunk' , ( ) => {
39
- const extractor = new ChunkExtractor ( { stats } )
40
45
expect ( extractor . getScriptTags ( ) ) . toMatchInlineSnapshot ( `
41
46
"<script>window.__LOADABLE_REQUIRED_CHUNKS__ = [];</script>
42
47
<script async data-chunk=\\"main\\" src=\\"/dist/node/main.js\\"></script>"
43
48
` )
44
49
} )
45
50
46
51
it ( 'should return other chunks if referenced' , ( ) => {
47
- const extractor = new ChunkExtractor ( { stats } )
48
52
extractor . addChunk ( 'letters-A' )
49
53
expect ( extractor . getScriptTags ( ) ) . toMatchInlineSnapshot ( `
50
54
"<script>window.__LOADABLE_REQUIRED_CHUNKS__ = [\\"letters-A\\"];</script>
@@ -56,7 +60,6 @@ describe('ChunkExtrator', () => {
56
60
57
61
describe ( '#getScriptElements' , ( ) => {
58
62
it ( 'should return main script tag without chunk' , ( ) => {
59
- const extractor = new ChunkExtractor ( { stats } )
60
63
expect ( extractor . getScriptElements ( ) ) . toMatchInlineSnapshot ( `
61
64
Array [
62
65
<script
@@ -76,7 +79,6 @@ Array [
76
79
} )
77
80
78
81
it ( 'should return other chunks if referenced' , ( ) => {
79
- const extractor = new ChunkExtractor ( { stats } )
80
82
extractor . addChunk ( 'letters-A' )
81
83
expect ( extractor . getScriptElements ( ) ) . toMatchInlineSnapshot ( `
82
84
Array [
@@ -104,25 +106,47 @@ Array [
104
106
105
107
describe ( '#getStyleTags' , ( ) => {
106
108
it ( 'should return main style tag without chunk' , ( ) => {
107
- const extractor = new ChunkExtractor ( { stats } )
108
109
expect ( extractor . getStyleTags ( ) ) . toMatchInlineSnapshot (
109
110
`"<link data-chunk=\\"main\\" rel=\\"stylesheet\\" href=\\"/dist/node/main.css\\">"` ,
110
111
)
111
112
} )
112
113
113
114
it ( 'should return other chunks if referenced' , ( ) => {
114
- const extractor = new ChunkExtractor ( { stats } )
115
115
extractor . addChunk ( 'letters-A' )
116
116
expect ( extractor . getStyleTags ( ) ) . toMatchInlineSnapshot ( `
117
117
"<link data-chunk=\\"letters-A\\" rel=\\"stylesheet\\" href=\\"/dist/node/letters-A.css\\">
118
118
<link data-chunk=\\"main\\" rel=\\"stylesheet\\" href=\\"/dist/node/main.css\\">"
119
119
` )
120
120
} )
121
+
122
+ } )
123
+
124
+ describe ( '#getInlineStyleTags' , ( ) => {
125
+ it ( 'should return inline style tags as a promise' , ( ) => {
126
+ extractor . addChunk ( 'letters-A' )
127
+ expect . assertions ( 1 )
128
+ return extractor . getInlineStyleTags ( ) . then ( data => expect ( data ) . toMatchInlineSnapshot ( `
129
+ "<style data-chunk=\\"letters-A\\">
130
+ body {
131
+ background: pink;
132
+ }
133
+
134
+ </style>
135
+
136
+ <style data-chunk=\\"main\\">
137
+ h1 {
138
+ color: cyan;
139
+ }
140
+ </style>
141
+ "
142
+ ` ) ,
143
+ )
144
+ } )
145
+
121
146
} )
122
147
123
148
describe ( '#getStyleElements' , ( ) => {
124
149
it ( 'should return main style tag without chunk' , ( ) => {
125
- const extractor = new ChunkExtractor ( { stats } )
126
150
expect ( extractor . getStyleElements ( ) ) . toMatchInlineSnapshot ( `
127
151
Array [
128
152
<link
@@ -135,7 +159,6 @@ Array [
135
159
} )
136
160
137
161
it ( 'should return other chunks if referenced' , ( ) => {
138
- const extractor = new ChunkExtractor ( { stats } )
139
162
extractor . addChunk ( 'letters-A' )
140
163
expect ( extractor . getStyleElements ( ) ) . toMatchInlineSnapshot ( `
141
164
Array [
@@ -152,11 +175,63 @@ Array [
152
175
]
153
176
` )
154
177
} )
178
+
179
+ } )
180
+
181
+ describe ( '#getInlineStyleElements' , ( ) => {
182
+ it ( 'should return inline style elements as a promise' , ( ) => {
183
+ extractor . addChunk ( 'letters-A' )
184
+ expect . assertions ( 1 )
185
+ return extractor . getInlineStyleElements ( ) . then ( data => expect ( data ) . toMatchInlineSnapshot ( `
186
+ Array [
187
+ <style
188
+ dangerouslySetInnerHTML={
189
+ Object {
190
+ "__html": "body {
191
+ background: pink;
192
+ }
193
+ ",
194
+ }
195
+ }
196
+ data-chunk="letters-A"
197
+ />,
198
+ <style
199
+ dangerouslySetInnerHTML={
200
+ Object {
201
+ "__html": "h1 {
202
+ color: cyan;
203
+ }",
204
+ }
205
+ }
206
+ data-chunk="main"
207
+ />,
208
+ ]
209
+ ` ) ,
210
+ )
211
+ } )
212
+
213
+ } )
214
+
215
+ describe ( '#getCssString' , ( ) => {
216
+ it ( 'should return a string of the referenced css files as a promise' , ( ) => {
217
+ extractor . addChunk ( 'letters-A' )
218
+ expect . assertions ( 1 )
219
+ return extractor . getCssString ( ) . then ( data => expect ( data ) . toMatchInlineSnapshot ( `
220
+ "body {
221
+ background: pink;
222
+ }
223
+
224
+ h1 {
225
+ color: cyan;
226
+ }"
227
+ ` ) ,
228
+ )
229
+ } )
230
+
155
231
} )
156
232
157
233
describe ( '#getLinkTags' , ( ) => {
158
234
it ( 'should return main script tag without chunk' , ( ) => {
159
- const extractor = new ChunkExtractor ( { stats } )
160
235
expect ( extractor . getLinkTags ( ) ) . toMatchInlineSnapshot ( `
161
236
"<link data-chunk=\\"main\\" rel=\\"preload\\" as=\\"style\\" href=\\"/dist/node/main.css\\">
162
237
<link data-chunk=\\"main\\" rel=\\"preload\\" as=\\"script\\" href=\\"/dist/node/main.js\\">
@@ -166,7 +241,6 @@ Array [
166
241
} )
167
242
168
243
it ( 'should return other chunks if referenced' , ( ) => {
169
- const extractor = new ChunkExtractor ( { stats } )
170
244
extractor . addChunk ( 'letters-A' )
171
245
expect ( extractor . getLinkTags ( ) ) . toMatchInlineSnapshot ( `
172
246
"<link data-chunk=\\"letters-A\\" rel=\\"preload\\" as=\\"style\\" href=\\"/dist/node/letters-A.css\\">
@@ -181,7 +255,6 @@ Array [
181
255
182
256
describe ( '#getLinkElements' , ( ) => {
183
257
it ( 'should return main script tag without chunk' , ( ) => {
184
- const extractor = new ChunkExtractor ( { stats } )
185
258
expect ( extractor . getLinkElements ( ) ) . toMatchInlineSnapshot ( `
186
259
Array [
187
260
<link
@@ -213,7 +286,6 @@ Array [
213
286
} )
214
287
215
288
it ( 'should return other chunks if referenced' , ( ) => {
216
- const extractor = new ChunkExtractor ( { stats } )
217
289
extractor . addChunk ( 'letters-A' )
218
290
expect ( extractor . getLinkElements ( ) ) . toMatchInlineSnapshot ( `
219
291
Array [
@@ -260,7 +332,6 @@ Array [
260
332
261
333
describe ( '#requireEntryPoint' , ( ) => {
262
334
it ( 'should load the first entrypoint' , ( ) => {
263
- const extractor = new ChunkExtractor ( { stats } )
264
335
const x = extractor . requireEntrypoint ( )
265
336
expect ( x ) . toBe ( 'hello' )
266
337
} )
0 commit comments