6
6
* found in the LICENSE file at https://angular.dev/license
7
7
*/
8
8
9
- import { BudgetEntry , BudgetType , ThresholdSeverity , checkBudgets } from './bundle-calculator' ;
10
-
11
- const kB = 1000 ;
9
+ import {
10
+ BYTES_IN_KILOBYTE ,
11
+ BudgetEntry ,
12
+ BudgetType ,
13
+ ThresholdSeverity ,
14
+ checkBudgets ,
15
+ } from './bundle-calculator' ;
12
16
13
17
describe ( 'bundle-calculator' , ( ) => {
14
18
describe ( 'checkBudgets()' , ( ) => {
@@ -24,11 +28,11 @@ describe('bundle-calculator', () => {
24
28
assets : [
25
29
{
26
30
name : 'foo.js' ,
27
- size : 1.5 * kB ,
31
+ size : 1.5 * BYTES_IN_KILOBYTE ,
28
32
} ,
29
33
{
30
34
name : 'bar.js' ,
31
- size : 0.5 * kB ,
35
+ size : 0.5 * BYTES_IN_KILOBYTE ,
32
36
} ,
33
37
] ,
34
38
} ;
@@ -55,11 +59,11 @@ describe('bundle-calculator', () => {
55
59
assets : [
56
60
{
57
61
name : 'foo.js' ,
58
- size : 1.5 * kB ,
62
+ size : 1.5 * BYTES_IN_KILOBYTE ,
59
63
} ,
60
64
{
61
65
name : 'bar.js' ,
62
- size : 0.5 * kB ,
66
+ size : 0.5 * BYTES_IN_KILOBYTE ,
63
67
} ,
64
68
] ,
65
69
} ;
@@ -93,11 +97,11 @@ describe('bundle-calculator', () => {
93
97
assets : [
94
98
{
95
99
name : 'foo.js' ,
96
- size : 0.75 * kB ,
100
+ size : 0.75 * BYTES_IN_KILOBYTE ,
97
101
} ,
98
102
{
99
103
name : 'bar.js' ,
100
- size : 0.75 * kB ,
104
+ size : 0.75 * BYTES_IN_KILOBYTE ,
101
105
} ,
102
106
] ,
103
107
} ;
@@ -131,11 +135,11 @@ describe('bundle-calculator', () => {
131
135
assets : [
132
136
{
133
137
name : 'foo.js' ,
134
- size : 0.5 * kB ,
138
+ size : 0.5 * BYTES_IN_KILOBYTE ,
135
139
} ,
136
140
{
137
141
name : 'bar.js' ,
138
- size : 0.75 * kB ,
142
+ size : 0.75 * BYTES_IN_KILOBYTE ,
139
143
} ,
140
144
] ,
141
145
} ;
@@ -169,15 +173,15 @@ describe('bundle-calculator', () => {
169
173
assets : [
170
174
{
171
175
name : 'foo.js' ,
172
- size : 0.75 * kB ,
176
+ size : 0.75 * BYTES_IN_KILOBYTE ,
173
177
} ,
174
178
{
175
179
name : 'bar.js' ,
176
- size : 0.75 * kB ,
180
+ size : 0.75 * BYTES_IN_KILOBYTE ,
177
181
} ,
178
182
{
179
183
name : 'baz.css' ,
180
- size : 1.5 * kB ,
184
+ size : 1.5 * BYTES_IN_KILOBYTE ,
181
185
} ,
182
186
] ,
183
187
} ;
@@ -211,11 +215,11 @@ describe('bundle-calculator', () => {
211
215
assets : [
212
216
{
213
217
name : 'foo.js' ,
214
- size : 0.75 * kB ,
218
+ size : 0.75 * BYTES_IN_KILOBYTE ,
215
219
} ,
216
220
{
217
221
name : 'bar.css' ,
218
- size : 0.75 * kB ,
222
+ size : 0.75 * BYTES_IN_KILOBYTE ,
219
223
} ,
220
224
] ,
221
225
} ;
@@ -249,11 +253,11 @@ describe('bundle-calculator', () => {
249
253
assets : [
250
254
{
251
255
name : 'foo.css' ,
252
- size : 1.5 * kB ,
256
+ size : 1.5 * BYTES_IN_KILOBYTE ,
253
257
} ,
254
258
{
255
259
name : 'bar.js' ,
256
- size : 0.5 * kB ,
260
+ size : 0.5 * BYTES_IN_KILOBYTE ,
257
261
} ,
258
262
] ,
259
263
} ;
@@ -282,11 +286,11 @@ describe('bundle-calculator', () => {
282
286
assets : [
283
287
{
284
288
name : 'foo.js' ,
285
- size : 1.5 * kB ,
289
+ size : 1.5 * BYTES_IN_KILOBYTE ,
286
290
} ,
287
291
{
288
292
name : 'bar.js' ,
289
- size : 0.5 * kB ,
293
+ size : 0.5 * BYTES_IN_KILOBYTE ,
290
294
} ,
291
295
] ,
292
296
} ;
@@ -320,11 +324,11 @@ describe('bundle-calculator', () => {
320
324
assets : [
321
325
{
322
326
name : 'foo.ext' ,
323
- size : 1.5 * kB ,
327
+ size : 1.5 * BYTES_IN_KILOBYTE ,
324
328
} ,
325
329
{
326
330
name : 'bar.ext' ,
327
- size : 0.5 * kB ,
331
+ size : 0.5 * BYTES_IN_KILOBYTE ,
328
332
} ,
329
333
] ,
330
334
} ;
@@ -338,5 +342,38 @@ describe('bundle-calculator', () => {
338
342
message : jasmine . stringMatching ( 'foo.ext exceeded maximum budget.' ) ,
339
343
} ) ;
340
344
} ) ;
345
+
346
+ it ( 'does not exceed the individual file budget limit' , ( ) => {
347
+ const budgets : BudgetEntry [ ] = [
348
+ {
349
+ type : BudgetType . Bundle ,
350
+ maximumError : '1000kb' ,
351
+ } ,
352
+ ] ;
353
+ const stats = {
354
+ chunks : [
355
+ {
356
+ id : 0 ,
357
+ initial : true ,
358
+ names : [ 'main' ] ,
359
+ files : [ 'main.ext' , 'bar.ext' ] ,
360
+ } ,
361
+ ] ,
362
+ assets : [
363
+ {
364
+ name : 'main.ext' ,
365
+ size : 1 * BYTES_IN_KILOBYTE ,
366
+ } ,
367
+ {
368
+ name : 'bar.ext' ,
369
+ size : 0.5 * BYTES_IN_KILOBYTE ,
370
+ } ,
371
+ ] ,
372
+ } ;
373
+
374
+ const failures = Array . from ( checkBudgets ( budgets , stats ) ) ;
375
+
376
+ expect ( failures ) . toHaveSize ( 0 ) ;
377
+ } ) ;
341
378
} ) ;
342
379
} ) ;
0 commit comments