@@ -10,7 +10,7 @@ class HelperTest < Minitest::Test
10
10
FIXTURES_PATH = File . expand_path ( "../fixtures" , __FILE__ )
11
11
12
12
def setup
13
- assets = @assets = Sprockets ::Environment . new
13
+ @assets = Sprockets ::Environment . new
14
14
@assets . append_path FIXTURES_PATH
15
15
@assets . context_class . class_eval do
16
16
include ::Sprockets ::Rails ::Helper
@@ -32,13 +32,34 @@ def setup
32
32
33
33
@foo_js_digest = @assets [ 'foo.js' ] . digest
34
34
@foo_css_digest = @assets [ 'foo.css' ] . digest
35
- @logo_digest = @assets [ "logo.png" ] . digest
35
+ @bar_js_digest = @assets [ 'bar.js' ] . digest
36
+ @bar_css_digest = @assets [ 'bar.css' ] . digest
37
+ @logo_digest = @assets [ 'logo.png' ] . digest
38
+
39
+ @dependency_js_digest = @assets [ 'dependency.js' ] . digest
40
+ @dependency_css_digest = @assets [ 'dependency.css' ] . digest
41
+ @file1_js_digest = @assets [ 'file1.js' ] . digest
42
+ @file1_css_digest = @assets [ 'file1.css' ] . digest
43
+ @file2_js_digest = @assets [ 'file2.js' ] . digest
44
+ @file2_css_digest = @assets [ 'file2.css' ] . digest
36
45
37
46
Sprockets ::Rails ::Helper . raise_runtime_errors = false
38
47
end
39
48
40
49
def test_truth
41
50
end
51
+
52
+ def assert_servable_asset_url ( url )
53
+ path , query = url . split ( "?" , 2 )
54
+ path = path . sub ( @view . assets_prefix , "" )
55
+
56
+ status = @assets . call ( {
57
+ 'REQUEST_METHOD' => 'GET' ,
58
+ 'PATH_INFO' => path ,
59
+ 'QUERY_STRING' => query
60
+ } ) [ 0 ]
61
+ assert_equal 200 , status , "#{ url } responded with #{ status } "
62
+ end
42
63
end
43
64
44
65
class NoHostHelperTest < HelperTest
@@ -191,6 +212,8 @@ def test_javascript_include_tag
191
212
@view . javascript_include_tag ( "foo.js" )
192
213
assert_equal %(<script src="/assets/foo.js"></script>) ,
193
214
@view . javascript_include_tag ( :foo )
215
+
216
+ assert_servable_asset_url "/assets/foo.js"
194
217
end
195
218
196
219
def test_stylesheet_link_tag
@@ -202,18 +225,22 @@ def test_stylesheet_link_tag
202
225
@view . stylesheet_link_tag ( "foo.css" )
203
226
assert_equal %(<link href="/assets/foo.css" media="screen" rel="stylesheet" />) ,
204
227
@view . stylesheet_link_tag ( :foo )
228
+
229
+ assert_servable_asset_url "/assets/foo.css"
205
230
end
206
231
207
232
def test_javascript_path
208
233
super
209
234
210
235
assert_equal "/assets/foo.js" , @view . javascript_path ( "foo" )
236
+ assert_servable_asset_url "/assets/foo.js"
211
237
end
212
238
213
239
def test_stylesheet_path
214
240
super
215
241
216
242
assert_equal "/assets/foo.css" , @view . stylesheet_path ( "foo" )
243
+ assert_servable_asset_url "/assets/foo.css"
217
244
end
218
245
219
246
def test_asset_digest
@@ -243,6 +270,8 @@ def test_javascript_include_tag
243
270
@view . javascript_include_tag ( "foo.js" )
244
271
assert_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js"></script>) ,
245
272
@view . javascript_include_tag ( :foo )
273
+
274
+ assert_servable_asset_url "/assets/foo-#{ @foo_js_digest } .js"
246
275
end
247
276
248
277
def test_stylesheet_link_tag
@@ -254,18 +283,22 @@ def test_stylesheet_link_tag
254
283
@view . stylesheet_link_tag ( "foo.css" )
255
284
assert_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" />) ,
256
285
@view . stylesheet_link_tag ( :foo )
286
+
287
+ assert_servable_asset_url "/assets/foo-#{ @foo_css_digest } .css"
257
288
end
258
289
259
290
def test_javascript_path
260
291
super
261
292
262
293
assert_equal "/assets/foo-#{ @foo_js_digest } .js" , @view . javascript_path ( "foo" )
294
+ assert_servable_asset_url "/assets/foo-#{ @foo_js_digest } .js"
263
295
end
264
296
265
297
def test_stylesheet_path
266
298
super
267
299
268
300
assert_equal "/assets/foo-#{ @foo_css_digest } .css" , @view . stylesheet_path ( "foo" )
301
+ assert_servable_asset_url "/assets/foo-#{ @foo_css_digest } .css"
269
302
end
270
303
271
304
def test_asset_digest
@@ -299,6 +332,12 @@ def test_javascript_include_tag
299
332
@view . javascript_include_tag ( :bar )
300
333
assert_equal %(<script src="/assets/dependency.js?body=1"></script>\n <script src="/assets/file1.js?body=1"></script>\n <script src="/assets/file2.js?body=1"></script>) ,
301
334
@view . javascript_include_tag ( :file1 , :file2 )
335
+
336
+ assert_servable_asset_url "/assets/foo.js?body=1"
337
+ assert_servable_asset_url "/assets/bar.js?body=1"
338
+ assert_servable_asset_url "/assets/dependency.js?body=1"
339
+ assert_servable_asset_url "/assets/file1.js?body=1"
340
+ assert_servable_asset_url "/assets/file2.js?body=1"
302
341
end
303
342
304
343
def test_stylesheet_link_tag
@@ -310,18 +349,98 @@ def test_stylesheet_link_tag
310
349
@view . stylesheet_link_tag ( :bar )
311
350
assert_equal %(<link href="/assets/dependency.css?body=1" media="screen" rel="stylesheet" />\n <link href="/assets/file1.css?body=1" media="screen" rel="stylesheet" />\n <link href="/assets/file2.css?body=1" media="screen" rel="stylesheet" />) ,
312
351
@view . stylesheet_link_tag ( :file1 , :file2 )
352
+
353
+ assert_servable_asset_url "/assets/foo.css?body=1"
354
+ assert_servable_asset_url "/assets/bar.css?body=1"
355
+ assert_servable_asset_url "/assets/dependency.css?body=1"
356
+ assert_servable_asset_url "/assets/file1.css?body=1"
357
+ assert_servable_asset_url "/assets/file2.css?body=1"
313
358
end
314
359
315
360
def test_javascript_path
316
361
super
317
362
318
363
assert_equal "/assets/foo.js" , @view . javascript_path ( "foo" )
364
+ assert_servable_asset_url "/assets/foo.js"
319
365
end
320
366
321
367
def test_stylesheet_path
322
368
super
323
369
324
370
assert_equal "/assets/foo.css" , @view . stylesheet_path ( "foo" )
371
+ assert_servable_asset_url "/assets/foo.css"
372
+ end
373
+ end
374
+
375
+ class DebugDigestHelperTest < NoHostHelperTest
376
+ def setup
377
+ super
378
+ @view . debug_assets = true
379
+ @view . digest_assets = true
380
+ @assets . context_class . digest_assets = true
381
+ end
382
+
383
+ def test_javascript_include_tag
384
+ super
385
+
386
+ assert_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js?body=1"></script>) ,
387
+ @view . javascript_include_tag ( :foo )
388
+ assert_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js?body=1"></script>\n <script src="/assets/bar-#{ @bar_js_digest } .js?body=1"></script>) ,
389
+ @view . javascript_include_tag ( :bar )
390
+ assert_equal %(<script src="/assets/dependency-#{ @dependency_js_digest } .js?body=1"></script>\n <script src="/assets/file1-#{ @file1_js_digest } .js?body=1"></script>\n <script src="/assets/file2-#{ @file1_js_digest } .js?body=1"></script>) ,
391
+ @view . javascript_include_tag ( :file1 , :file2 )
392
+
393
+ assert_servable_asset_url "/assets/foo-#{ @foo_js_digest } .js?body=1"
394
+ assert_servable_asset_url "/assets/bar-#{ @bar_js_digest } .js?body=1"
395
+ assert_servable_asset_url "/assets/dependency-#{ @dependency_js_digest } .js?body=1"
396
+ assert_servable_asset_url "/assets/file1-#{ @file1_js_digest } .js?body=1"
397
+ assert_servable_asset_url "/assets/file2-#{ @file2_js_digest } .js?body=1"
398
+ end
399
+
400
+ def test_stylesheet_link_tag
401
+ super
402
+
403
+ assert_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css?body=1" media="screen" rel="stylesheet" />) ,
404
+ @view . stylesheet_link_tag ( :foo )
405
+ assert_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css?body=1" media="screen" rel="stylesheet" />\n <link href="/assets/bar-#{ @bar_css_digest } .css?body=1" media="screen" rel="stylesheet" />) ,
406
+ @view . stylesheet_link_tag ( :bar )
407
+ assert_equal %(<link href="/assets/dependency-#{ @dependency_css_digest } .css?body=1" media="screen" rel="stylesheet" />\n <link href="/assets/file1-#{ @file1_css_digest } .css?body=1" media="screen" rel="stylesheet" />\n <link href="/assets/file2-#{ @file2_css_digest } .css?body=1" media="screen" rel="stylesheet" />) ,
408
+ @view . stylesheet_link_tag ( :file1 , :file2 )
409
+
410
+ assert_servable_asset_url "/assets/foo-#{ @foo_css_digest } .css?body=1"
411
+ assert_servable_asset_url "/assets/bar-#{ @bar_css_digest } .css?body=1"
412
+ assert_servable_asset_url "/assets/dependency-#{ @dependency_css_digest } .css?body=1"
413
+ assert_servable_asset_url "/assets/file1-#{ @file1_css_digest } .css?body=1"
414
+ assert_servable_asset_url "/assets/file2-#{ @file2_css_digest } .css?body=1"
415
+ end
416
+
417
+ def test_javascript_path
418
+ super
419
+
420
+ assert_equal "/assets/foo-#{ @foo_js_digest } .js" , @view . javascript_path ( "foo" )
421
+ assert_servable_asset_url "/assets/foo-#{ @foo_js_digest } .js"
422
+ end
423
+
424
+ def test_stylesheet_path
425
+ super
426
+
427
+ assert_equal "/assets/foo-#{ @foo_css_digest } .css" , @view . stylesheet_path ( "foo" )
428
+ assert_servable_asset_url "/assets/foo-#{ @foo_css_digest } .css"
429
+ end
430
+
431
+ def test_asset_digest
432
+ assert_equal @foo_js_digest , @view . asset_digest ( "foo.js" )
433
+ assert_equal @foo_css_digest , @view . asset_digest ( "foo.css" )
434
+ end
435
+
436
+ def test_asset_digest_path
437
+ assert_equal "foo-#{ @foo_js_digest } .js" , @view . asset_digest_path ( "foo.js" )
438
+ assert_equal "foo-#{ @foo_css_digest } .css" , @view . asset_digest_path ( "foo.css" )
439
+ end
440
+
441
+ def test_asset_url
442
+ assert_equal "var url = '/assets/foo-#{ @foo_js_digest } .js';\n " , @assets [ "url.js" ] . to_s
443
+ assert_equal "p { background: url(/assets/logo-#{ @logo_digest } .png); }\n " , @assets [ "url.css" ] . to_s
325
444
end
326
445
end
327
446
@@ -447,7 +566,7 @@ def test_asset_not_precompiled_error
447
566
@view . javascript_include_tag ( "foo" )
448
567
end
449
568
450
- error = assert_raises ( Sprockets ::Rails ::Helper ::AssetFilteredError ) do
569
+ assert_raises ( Sprockets ::Rails ::Helper ::AssetFilteredError ) do
451
570
@view . javascript_include_tag ( :foo )
452
571
end
453
572
0 commit comments