imgix 3.4.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,70 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class PurgeTest < Imgix::Test
6
- def test_runtime_error_without_api_key
7
- assert_raises(RuntimeError) do
8
- mock_client(api_key: nil).purge(mock_image)
9
- end
10
- end
11
-
12
- def test_purger_version_warns
13
- stub_request(:post, endpoint).with(body: body).to_return(status: 200)
14
-
15
- assert_output(nil, deprecation_warning) do
16
- mock_client(api_key: '10adc394').purge('/images/demo.png')
17
- end
18
- end
19
-
20
- def test_successful_purge
21
- stub_request(:post, endpoint).with(body: body).to_return(status: 200)
22
-
23
- mock_client(api_key: '10adc394').purge('/images/demo.png')
24
-
25
- assert_requested(
26
- :post,
27
- endpoint,
28
- body: 'url=https%3A%2F%2Fdemo.imgix.net%2Fimages%2Fdemo.png',
29
- headers: mock_headers,
30
- times: 1
31
- )
32
- end
33
-
34
- private
35
-
36
- def mock_client(api_key: '')
37
- Imgix::Client.new(
38
- domain: 'demo.imgix.net',
39
- api_key: api_key,
40
- include_library_param: false
41
- )
42
- end
43
-
44
- def mock_headers
45
- {
46
- 'Accept' => '*/*',
47
- 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
48
- 'Authorization' => 'Basic MTBhZGMzOTQ6',
49
- 'Content-Type' => 'application/x-www-form-urlencoded',
50
- 'User-Agent' => "imgix rb-#{Imgix::VERSION}"
51
- }
52
- end
53
-
54
- def mock_image
55
- 'https://demo.imgix.net/images/demo.png'
56
- end
57
-
58
- def endpoint
59
- 'https://api.imgix.com/v2/image/purger'
60
- end
61
-
62
- def body
63
- { 'url' => mock_image }
64
- end
65
-
66
- def deprecation_warning
67
- "Warning: Your `api_key` will no longer work after upgrading to\n" \
68
- "imgix-rb version >= 4.0.0.\n"
69
- end
70
- end
@@ -1,755 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- module SrcsetTest
6
- RESOLUTIONS = [
7
- 100, 116, 135, 156, 181, 210, 244, 283,
8
- 328, 380, 441, 512, 594, 689, 799, 927,
9
- 1075, 1247, 1446, 1678, 1946, 2257, 2619,
10
- 3038, 3524, 4087, 4741, 5500, 6380, 7401, 8192
11
- ].freeze
12
-
13
- DPR_QUALITY = [75, 50, 35, 23, 20].freeze
14
-
15
- DOMAIN = 'testing.imgix.net'
16
- TOKEN = 'MYT0KEN'
17
- JPG_PATH = 'image.jpg'
18
-
19
- def mock_client
20
- Imgix::Client.new(
21
- host: DOMAIN,
22
- include_library_param: false
23
- ).path(JPG_PATH)
24
- end
25
-
26
- def mock_signed_client
27
- Imgix::Client.new(
28
- host: DOMAIN,
29
- secure_url_token: TOKEN,
30
- include_library_param: false
31
- ).path(JPG_PATH)
32
- end
33
-
34
- def signature_base(params)
35
- TOKEN + '/' + JPG_PATH + params
36
- end
37
-
38
- def get_sig_from(src)
39
- src.slice(src.index('s=') + 2, src.length)
40
- end
41
-
42
- def get_params_from(src)
43
- src[src.index('?')..src.index('s=') - 2]
44
- end
45
-
46
- def get_expected_signature(src)
47
- # Ensure signature param exists.
48
- assert_includes src, 's='
49
-
50
- params = get_params_from(src)
51
- signature_base = signature_base(params)
52
-
53
- Digest::MD5.hexdigest(signature_base)
54
- end
55
-
56
- class SrcsetDefault < Imgix::Test
57
- include SrcsetTest
58
-
59
- def test_no_parameters
60
- srcset = path.to_srcset
61
-
62
- expected_number_of_pairs = 31
63
- assert_equal expected_number_of_pairs, srcset.split(',').length
64
- end
65
-
66
- def test_srcset_pair_values
67
- resolutions = RESOLUTIONS
68
- srcset = path.to_srcset
69
- srclist = srcset.split(',').map do |srcset_split|
70
- srcset_split.split(' ')[1].to_i
71
- end
72
-
73
- for i in 0..srclist.length - 1
74
- assert_equal(srclist[i], resolutions[i])
75
- end
76
- end
77
-
78
- private
79
-
80
- def path
81
- @client ||= mock_signed_client
82
- end
83
- end
84
-
85
- class SrcsetGivenWidth < Imgix::Test
86
- include SrcsetTest
87
-
88
- def test_srcset_in_dpr_form
89
- device_pixel_ratio = 1
90
-
91
- srcset.split(',').map do |src|
92
- ratio = src.split(' ')[1]
93
- assert_equal "#{device_pixel_ratio}x", ratio
94
- device_pixel_ratio += 1
95
- end
96
- end
97
-
98
- def test_srcset_has_dpr_params
99
- i = 1
100
- srcset.split(',').map do |srcset_split|
101
- src = srcset_split.split(' ')[0]
102
- assert_includes src, "dpr=#{i}"
103
- i += 1
104
- end
105
- end
106
-
107
- def test_srcset_signs_urls
108
- srcset.split(',').map do |srcset_split|
109
- src = srcset_split.split(' ')[0]
110
- expected_signature = get_expected_signature(src)
111
-
112
- assert_includes src, expected_signature
113
- end
114
- end
115
-
116
- def test_srcset_has_variable_qualities
117
- i = 0
118
- srcset.split(',').map do |src|
119
- assert_includes src, "q=#{DPR_QUALITY[i]}"
120
- i += 1
121
- end
122
- end
123
-
124
- def test_srcset_respects_overriding_quality
125
- quality_override = 100
126
- srcset = mock_signed_client.to_srcset(w: 100, q: quality_override)
127
-
128
- srcset.split(',').map do |src|
129
- assert_includes src, "q=#{quality_override}"
130
- end
131
- end
132
-
133
- def test_disable_variable_quality
134
- srcset = mock_signed_client.to_srcset(
135
- w: 100,
136
- options: { disable_variable_quality: true }
137
- )
138
-
139
- srcset.split(',').map do |src|
140
- assert(not(src.include?('q=')))
141
- end
142
- end
143
-
144
- def test_respects_quality_param_when_disabled
145
- quality_override = 100
146
- srcset = mock_signed_client.to_srcset(
147
- w: 100, q: 100,
148
- options: { disable_variable_quality: true }
149
- )
150
-
151
- srcset.split(',').map do |src|
152
- assert_includes src, "q=#{quality_override}"
153
- end
154
- end
155
-
156
- private
157
-
158
- def srcset
159
- @client ||= mock_signed_client.to_srcset(w: 100)
160
- end
161
- end
162
-
163
- class SrcsetGivenHeight < Imgix::Test
164
- include SrcsetTest
165
-
166
- def test_srcset_generates_width_pairs
167
- expected_number_of_pairs = 31
168
- assert_equal expected_number_of_pairs, srcset.split(',').length
169
- end
170
-
171
- def test_srcset_pair_values
172
- resolutions = RESOLUTIONS
173
- srclist = srcset.split(',').map do |srcset_split|
174
- srcset_split.split(' ')[1].to_i
175
- end
176
-
177
- for i in 0..srclist.length - 1
178
- assert_equal(srclist[i], resolutions[i])
179
- end
180
- end
181
-
182
- def test_srcset_respects_height_parameter
183
- srcset.split(',').map do |src|
184
- assert_includes src, 'h='
185
- end
186
- end
187
-
188
- def test_srcset_within_bounds
189
- min, *max = srcset.split(',')
190
-
191
- # parse out the width descriptor as an integer
192
- min = min.split(' ')[1].to_i
193
- max = max[max.length - 1].split(' ')[1].to_i
194
-
195
- assert_operator min, :>=, 100
196
- assert_operator max, :<=, 8192
197
- end
198
-
199
- # a 17% testing threshold is used to account for rounding
200
- def test_srcset_iterates_17_percent
201
- increment_allowed = 0.17
202
-
203
- # create an array of widths
204
- widths = srcset.split(',').map do |src|
205
- src.split(' ')[1].to_i
206
- end
207
-
208
- prev = widths[0]
209
-
210
- for i in 1..widths.length - 1
211
- element = widths[i]
212
- assert_operator (element.to_f / prev.to_f), :<, (1 + increment_allowed)
213
- prev = element
214
- end
215
- end
216
-
217
- def test_srcset_signs_urls
218
- srcset.split(',').map do |srcset_split|
219
- src = srcset_split.split(' ')[0]
220
- expected_signature = get_expected_signature(src)
221
-
222
- assert_includes src, expected_signature
223
- end
224
- end
225
-
226
- private
227
-
228
- def srcset
229
- @client ||= mock_signed_client.to_srcset(h: 100)
230
- end
231
- end
232
-
233
- class SrcsetGivenWidthAndHeight < Imgix::Test
234
- include SrcsetTest
235
-
236
- def test_srcset_in_dpr_form
237
- device_pixel_ratio = 1
238
- srcset.split(',').map do |src|
239
- ratio = src.split(' ')[1]
240
- assert_equal "#{device_pixel_ratio}x", ratio
241
- device_pixel_ratio += 1
242
- end
243
- end
244
-
245
- def test_srcset_has_dpr_params
246
- i = 1
247
- srcset.split(',').map do |srcset_split|
248
- src = srcset_split.split(' ')[0]
249
- assert_includes src, "dpr=#{i}"
250
- i += 1
251
- end
252
- end
253
-
254
- def test_srcset_signs_urls
255
- srcset.split(',').map do |srcset_split|
256
- src = srcset_split.split(' ')[0]
257
- expected_signature = get_expected_signature(src)
258
-
259
- assert_includes src, expected_signature
260
- end
261
- end
262
-
263
- def test_srcset_has_variable_qualities
264
- i = 0
265
- srcset.split(',').map do |src|
266
- assert_includes src, "q=#{DPR_QUALITY[i]}"
267
- i += 1
268
- end
269
- end
270
-
271
- def test_srcset_respects_overriding_quality
272
- quality_override = 100
273
- srcset = mock_signed_client.to_srcset(w: 100, h: 100, q: quality_override)
274
-
275
- srcset.split(',').map do |src|
276
- assert_includes src, "q=#{quality_override}"
277
- end
278
- end
279
-
280
- def test_disable_variable_quality
281
- srcset = mock_signed_client.to_srcset(
282
- w: 100, h: 100,
283
- options: { disable_variable_quality: true }
284
- )
285
-
286
- srcset.split(',').map do |src|
287
- assert(not(src.include?('q=')))
288
- end
289
- end
290
-
291
- def test_respects_quality_param_when_disabled
292
- quality_override = 100
293
- srcset = mock_signed_client.to_srcset(
294
- w: 100, h: 100, q: 100,
295
- options: { disable_variable_quality: true }
296
- )
297
-
298
- srcset.split(',').map do |src|
299
- assert_includes src, "q=#{quality_override}"
300
- end
301
- end
302
-
303
- private
304
-
305
- def srcset
306
- @client ||= mock_signed_client.to_srcset(w: 100, h: 100)
307
- end
308
- end
309
-
310
- class SrcsetGivenAspectRatio < Imgix::Test
311
- include SrcsetTest
312
-
313
- def test_srcset_generates_width_pairs
314
- expected_number_of_pairs = 31
315
- assert_equal expected_number_of_pairs, srcset.split(',').length
316
- end
317
-
318
- def test_srcset_pair_values
319
- srclist = srcset.split(',').map do |srcset_split|
320
- srcset_split.split(' ')[1].to_i
321
- end
322
-
323
- for i in 0..srclist.length - 1
324
- assert_equal(srclist[i], RESOLUTIONS[i])
325
- end
326
- end
327
-
328
- def test_srcset_within_bounds
329
- min, *max = srcset.split(',')
330
-
331
- # parse out the width descriptor as an integer
332
- min = min.split(' ')[1].to_i
333
- max = max[max.length - 1].split(' ')[1].to_i
334
-
335
- assert_operator min, :>=, 100
336
- assert_operator max, :<=, 8192
337
- end
338
-
339
- # a 17% testing threshold is used to account for rounding
340
- def test_srcset_iterates_17_percent
341
- increment_allowed = 0.17
342
-
343
- # create an array of widths
344
- widths = srcset.split(',').map do |src|
345
- src.split(' ')[1].to_i
346
- end
347
-
348
- prev = widths[0]
349
-
350
- for i in 1..widths.length - 1
351
- element = widths[i]
352
- assert_operator (element.to_f / prev.to_f), :<, (1 + increment_allowed)
353
- prev = element
354
- end
355
- end
356
-
357
- def test_srcset_signs_urls
358
- srcset.split(',').map do |srcset_split|
359
- src = srcset_split.split(' ')[0]
360
- expected_signature = get_expected_signature(src)
361
-
362
- assert_includes src, expected_signature
363
- end
364
- end
365
-
366
- private
367
-
368
- def srcset
369
- @client ||= mock_signed_client.to_srcset(ar: '3:2')
370
- end
371
- end
372
-
373
- class SrcsetGivenAspectRatioAndHeight < Imgix::Test
374
- include SrcsetTest
375
-
376
- def test_srcset_in_dpr_form
377
- device_pixel_ratio = 1
378
-
379
- srcset.split(',').map do |src|
380
- ratio = src.split(' ')[1]
381
- assert_equal "#{device_pixel_ratio}x", ratio
382
- device_pixel_ratio += 1
383
- end
384
- end
385
-
386
- def test_srcset_has_dpr_params
387
- i = 1
388
- srcset.split(',').map do |srcset_split|
389
- src = srcset_split.split(' ')[0]
390
- assert_includes src, "dpr=#{i}"
391
- i += 1
392
- end
393
- end
394
-
395
- def test_srcset_signs_urls
396
- srcset.split(',').map do |srcset_split|
397
- src = srcset_split.split(' ')[0]
398
- expected_signature = get_expected_signature(src)
399
-
400
- assert_includes src, expected_signature
401
- end
402
- end
403
-
404
- def test_srcset_has_variable_qualities
405
- i = 0
406
- srcset.split(',').map do |src|
407
- assert_includes src, "q=#{DPR_QUALITY[i]}"
408
- i += 1
409
- end
410
- end
411
-
412
- def test_srcset_respects_overriding_quality
413
- quality_override = 100
414
- srcset = mock_signed_client.to_srcset(
415
- w: 100, ar: '3:2', q: quality_override
416
- )
417
-
418
- srcset.split(',').map do |src|
419
- assert_includes src, "q=#{quality_override}"
420
- end
421
- end
422
-
423
- def test_disable_variable_quality
424
- srcset = mock_signed_client.to_srcset(
425
- w: 100, ar: '3:2',
426
- options: { disable_variable_quality: true }
427
- )
428
-
429
- srcset.split(',').map do |src|
430
- assert(not(src.include?('q=')))
431
- end
432
- end
433
-
434
- def test_respects_quality_param_when_disabled
435
- quality_override = 100
436
- srcset = mock_signed_client.to_srcset(
437
- w: 100, h: 100, q: 100,
438
- options: { disable_variable_quality: true }
439
- )
440
-
441
- srcset.split(',').map do |src|
442
- assert_includes src, "q=#{quality_override}"
443
- end
444
- end
445
-
446
- private
447
-
448
- def srcset
449
- @client ||= mock_signed_client.to_srcset({ h: 100, ar: '3:2' })
450
- end
451
- end
452
-
453
- class SrcsetWidthTolerance < Imgix::Test
454
- include SrcsetTest
455
-
456
- def test_srcset_generates_width_pairs
457
- expected_number_of_pairs = 15
458
- assert_equal expected_number_of_pairs, srcset.split(',').length
459
- end
460
-
461
- def test_srcset_pair_values
462
- resolutions = [100, 140, 196, 274, 384,
463
- 538, 753, 1054, 1476, 2066,
464
- 2893, 4050, 5669, 7937, 8192]
465
-
466
- srclist = srcset.split(',').map do |srcset_split|
467
- srcset_split.split(' ')[1].to_i
468
- end
469
-
470
- for i in 0..srclist.length - 1
471
- assert_equal(srclist[i], resolutions[i])
472
- end
473
- end
474
-
475
- def test_srcset_within_bounds
476
- min, *max = srcset.split(',')
477
-
478
- # parse out the width descriptor as an integer
479
- min = min.split(' ')[1].to_i
480
- max = max[max.length - 1].split(' ')[1].to_i
481
- assert_operator min, :>=, 100
482
- assert_operator max, :<=, 8192
483
- end
484
-
485
- # a 41% testing threshold is used to account for rounding
486
- def test_srcset_iterates_41_percent
487
- increment_allowed = 0.41
488
-
489
- # create an array of widths
490
- widths = srcset.split(',').map do |src|
491
- src.split(' ')[1].to_i
492
- end
493
-
494
- prev = widths[0]
495
-
496
- for i in 1..widths.length - 1
497
- element = widths[i]
498
- assert_operator (element.to_f / prev.to_f), :<, (1 + increment_allowed)
499
- prev = element
500
- end
501
- end
502
-
503
- def test_invalid_tolerance_emits_error
504
- assert_raises(ArgumentError) do
505
- mock_client.to_srcset(options: { width_tolerance: 'abc' })
506
- end
507
- end
508
-
509
- def test_negative_tolerance_emits_error
510
- assert_raises(ArgumentError) do
511
- mock_client.to_srcset(options: { width_tolerance: -0.10 })
512
- end
513
- end
514
-
515
- def test_with_param_after
516
- srcset = mock_signed_client.to_srcset(
517
- options: { width_tolerance: 0.20 },
518
- h: 1000, fit: 'clip'
519
- )
520
-
521
- assert_includes(srcset, 'h=')
522
- assert(not(srcset.include?('width_tolerance=')))
523
- end
524
-
525
- def test_with_param_before
526
- srcset = mock_signed_client.to_srcset(
527
- h: 1000, fit: 'clip',
528
- options: { width_tolerance: 0.20 }
529
- )
530
-
531
- assert_includes(srcset, 'h=')
532
- assert(not(srcset.include?('width_tolerance=')))
533
- end
534
-
535
- private
536
-
537
- def srcset
538
- @client ||= mock_signed_client.to_srcset(
539
- options: { width_tolerance: 0.20 }
540
- )
541
- end
542
- end
543
-
544
- class SrcsetCustomWidths < Imgix::Test
545
- include SrcsetTest
546
-
547
- def test_srcset_generates_width_pairs
548
- expected_number_of_pairs = 4
549
- assert_equal expected_number_of_pairs, srcset.split(',').length
550
- end
551
-
552
- def test_srcset_pair_values
553
- resolutions = [100, 500, 1000, 1800]
554
- srclist = srcset.split(',').map do |srcset_split|
555
- srcset_split.split(' ')[1].to_i
556
- end
557
-
558
- for i in 0..srclist.length - 1
559
- assert_equal(srclist[i], resolutions[i])
560
- end
561
- end
562
-
563
- def test_srcset_within_bounds
564
- min, *max = srcset.split(',')
565
-
566
- # parse out the width descriptor as an integer
567
- min = min.split(' ')[1].to_i
568
- max = max[max.length - 1].split(' ')[1].to_i
569
-
570
- assert_operator min, :>=, @widths[0]
571
- assert_operator max, :<=, @widths[-1]
572
- end
573
-
574
- def test_invalid_widths_input_emits_error
575
- assert_raises(ArgumentError) do
576
- mock_client.to_srcset(options: { widths: 'abc' })
577
- end
578
- end
579
-
580
- def test_non_integer_array_emits_error
581
- assert_raises(ArgumentError) do
582
- mock_client.to_srcset(options: { widths: [100, 200, false] })
583
- end
584
- end
585
-
586
- def test_negative_integer_array_emits_error
587
- assert_raises(ArgumentError) do
588
- mock_client.to_srcset(options: { widths: [100, 200, -100] })
589
- end
590
- end
591
-
592
- def test_with_param_after
593
- srcset = mock_signed_client.to_srcset(
594
- options: { widths: [100, 200, 300] },
595
- h: 1000, fit: 'clip'
596
- )
597
-
598
- assert_includes(srcset, 'h=')
599
- assert(not(srcset.include?('widths=')))
600
- end
601
-
602
- def test_with_param_before
603
- srcset = mock_client.to_srcset(
604
- h: 1000, fit: 'clip',
605
- options: { widths: [100, 200, 300] }
606
- )
607
- assert_includes(srcset, 'h=')
608
- assert(not(srcset.include?('widths=')))
609
- end
610
-
611
- private
612
-
613
- def srcset
614
- @widths = [100, 500, 1000, 1800]
615
- @client ||= mock_signed_client.to_srcset(options: { widths: @widths })
616
- end
617
- end
618
-
619
- class SrcsetMinMaxWidths < Imgix::Test
620
- include SrcsetTest
621
-
622
- def test_srcset_generates_width_pairs
623
- expected_number_of_pairs = 11
624
- assert_equal expected_number_of_pairs, srcset.split(',').length
625
- end
626
-
627
- def test_srcset_pair_values
628
- resolutions = [500, 580, 673, 780, 905, 1050,
629
- 1218, 1413, 1639, 1901, 2000]
630
- srclist = srcset.split(',').map do |srcset_split|
631
- srcset_split.split(' ')[1].to_i
632
- end
633
-
634
- for i in 0..srclist.length - 1
635
- assert_equal(srclist[i], resolutions[i])
636
- end
637
- end
638
-
639
- def test_srcset_within_bounds
640
- min, *max = srcset.split(',')
641
-
642
- # parse out the width descriptor as an integer
643
- min = min.split(' ')[1].to_i
644
- max = max[max.length - 1].split(' ')[1].to_i
645
-
646
- assert_operator min, :>=, @MIN
647
- assert_operator max, :<=, @MAX
648
- end
649
-
650
- # a 41% testing threshold is used to account for rounding
651
- def test_with_custom_width_tolerance
652
- srcset = mock_client.to_srcset(
653
- options: { min_width: 500, max_width: 2000, width_tolerance: 0.20 }
654
- )
655
-
656
- increment_allowed = 0.41
657
-
658
- # create an array of widths
659
- widths = srcset.split(',').map do |src|
660
- src.split(' ')[1].to_i
661
- end
662
-
663
- prev = widths[0]
664
-
665
- for i in 1..widths.length - 1
666
- element = widths[i]
667
- assert_operator (element.to_f / prev.to_f), :<, (1 + increment_allowed)
668
- prev = element
669
- end
670
- end
671
-
672
- def test_invalid_min_emits_error
673
- assert_raises(ArgumentError) do
674
- mock_client.to_srcset(options: { min_width: 'abc' })
675
- end
676
- end
677
-
678
- def test_negative_max_emits_error
679
- assert_raises(ArgumentError) do
680
- mock_client.to_srcset(options: { max_width: -100 })
681
- end
682
- end
683
-
684
- def test_with_param_after
685
- srcset = mock_client.to_srcset(
686
- options: { min_width: 500, max_width: 2000 },
687
- h: 1000, fit: 'clip'
688
- )
689
-
690
- assert_includes(srcset, 'h=')
691
- assert(not(srcset.include?('min_width=')))
692
- assert(not(srcset.include?('max_width=')))
693
- end
694
-
695
- def test_with_param_before
696
- srcset = mock_client.to_srcset(
697
- h: 1000, fit: 'clip',
698
- options: { min_width: 500, max_width: 2000 }
699
- )
700
-
701
- assert_includes(srcset, 'h=')
702
- assert(not(srcset.include?('min_width=')))
703
- assert(not(srcset.include?('max_width=')))
704
- end
705
-
706
- def test_only_min
707
- min_width = 1000
708
- max_width = 8192
709
- srcset = mock_client.to_srcset(options: { min_width: min_width })
710
-
711
- min, *max = srcset.split(',')
712
-
713
- # parse out the width descriptor as an integer
714
- min = min.split(' ')[1].to_i
715
- max = max[max.length - 1].split(' ')[1].to_i
716
-
717
- assert_operator min, :>=, min_width
718
- assert_operator max, :<=, max_width
719
- end
720
-
721
- def test_only_max
722
- min_width = 100
723
- max_width = 1000
724
- srcset = mock_client.to_srcset(options: { max_width: max_width })
725
- min, *max = srcset.split(',')
726
-
727
- # parse out the width descriptor as an integer
728
- min = min.split(' ')[1].to_i
729
- max = max[max.length - 1].split(' ')[1].to_i
730
-
731
- assert_operator min, :>=, min_width
732
- assert_operator max, :<=, max_width
733
- end
734
-
735
- def test_max_as_100
736
- srcset = mock_client.to_srcset(options: { max_width: 100 })
737
- assert_equal(srcset, 'https://testing.imgix.net/image.jpg?w=100 100w')
738
- end
739
-
740
- def test_min_as_8192
741
- srcset = mock_client.to_srcset(options: { min_width: 8192 })
742
- assert_equal(srcset, 'https://testing.imgix.net/image.jpg?w=8192 8192w')
743
- end
744
-
745
- private
746
-
747
- def srcset
748
- @MIN = 500
749
- @MAX = 2000
750
- @client ||= mock_client.to_srcset(
751
- options: { min_width: @MIN, max_width: @MAX }
752
- )
753
- end
754
- end
755
- end