hanami 2.1.0.beta2 → 2.1.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -9
  3. data/hanami.gemspec +1 -1
  4. data/lib/hanami/config/actions.rb +14 -0
  5. data/lib/hanami/extensions/action/slice_configured_action.rb +5 -5
  6. data/lib/hanami/extensions/action.rb +4 -4
  7. data/lib/hanami/extensions/view/context.rb +0 -11
  8. data/lib/hanami/extensions/view/part.rb +51 -2
  9. data/lib/hanami/extensions/view/slice_configured_part.rb +72 -0
  10. data/lib/hanami/extensions/view/slice_configured_view.rb +2 -2
  11. data/lib/hanami/helpers/assets_helper.rb +31 -43
  12. data/lib/hanami/routes.rb +33 -2
  13. data/lib/hanami/slice.rb +12 -2
  14. data/lib/hanami/slice_registrar.rb +48 -23
  15. data/lib/hanami/version.rb +1 -1
  16. data/lib/hanami/web/rack_logger.rb +70 -2
  17. data/lib/hanami/web/welcome.html.erb +203 -0
  18. data/lib/hanami/web/welcome.rb +46 -0
  19. data/spec/integration/assets/assets_spec.rb +14 -3
  20. data/spec/integration/logging/request_logging_spec.rb +65 -7
  21. data/spec/integration/rack_app/method_override_spec.rb +97 -0
  22. data/spec/integration/slices_spec.rb +275 -5
  23. data/spec/integration/view/context/assets_spec.rb +0 -8
  24. data/spec/integration/view/context/inflector_spec.rb +0 -8
  25. data/spec/integration/view/context/settings_spec.rb +0 -8
  26. data/spec/integration/view/helpers/part_helpers_spec.rb +2 -2
  27. data/spec/integration/view/helpers/user_defined_helpers/part_helpers_spec.rb +10 -10
  28. data/spec/integration/view/parts/default_rendering_spec.rb +138 -0
  29. data/spec/integration/web/welcome_view_spec.rb +84 -0
  30. data/spec/support/app_integration.rb +22 -4
  31. data/spec/unit/hanami/helpers/assets_helper/audio_tag_spec.rb +2 -2
  32. data/spec/unit/hanami/helpers/assets_helper/{favicon_link_tag_spec.rb → favicon_tag_spec.rb} +8 -12
  33. data/spec/unit/hanami/helpers/assets_helper/image_tag_spec.rb +1 -1
  34. data/spec/unit/hanami/helpers/assets_helper/javascript_tag_spec.rb +3 -3
  35. data/spec/unit/hanami/helpers/assets_helper/{stylesheet_link_tag_spec.rb → stylesheet_tag_spec.rb} +13 -13
  36. data/spec/unit/hanami/helpers/assets_helper/video_tag_spec.rb +5 -1
  37. data/spec/unit/hanami/version_spec.rb +1 -1
  38. metadata +15 -6
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "rack/test"
5
+
6
+ RSpec.describe "Web / Welcome view", :app_integration do
7
+ include Rack::Test::Methods
8
+
9
+ let(:app) { Hanami.app }
10
+
11
+ before do
12
+ with_directory(@dir = make_tmp_directory) do
13
+ write "config/app.rb", <<~RUBY
14
+ require "hanami"
15
+
16
+ module TestApp
17
+ class App < Hanami::App
18
+ config.logger.stream = File::NULL
19
+ end
20
+ end
21
+ RUBY
22
+
23
+ write "config/routes.rb", <<~RUBY
24
+ module TestApp
25
+ class Routes < Hanami::Routes
26
+ end
27
+ end
28
+ RUBY
29
+
30
+ before_prepare if respond_to?(:before_prepare)
31
+ require "hanami/prepare"
32
+ end
33
+ end
34
+
35
+ context "no routes defined" do
36
+ it "renders the welcome page" do
37
+ get "/"
38
+
39
+ body = last_response.body.strip
40
+ expect(body).to include "<h1>Welcome to Hanami</h1>"
41
+ expect(body).to include "Hanami version: #{Hanami::VERSION}"
42
+ expect(body).to include "Ruby version: #{RUBY_DESCRIPTION}"
43
+
44
+ expect(last_response.status).to eq 200
45
+ end
46
+ end
47
+
48
+ context "routes defined" do
49
+ def before_prepare
50
+ write "config/routes.rb", <<~RUBY
51
+ module TestApp
52
+ class Routes < Hanami::Routes
53
+ root to: -> * { [200, {}, "Hello from a route"] }
54
+ end
55
+ end
56
+ RUBY
57
+ end
58
+
59
+ it "does not render the welcome page" do
60
+ get "/"
61
+
62
+ expect(last_response.body).to eq "Hello from a route"
63
+ expect(last_response.status).to eq 200
64
+ end
65
+ end
66
+
67
+ context "non-development env" do
68
+ def before_prepare
69
+ @hanami_env = ENV["HANAMI_ENV"]
70
+ ENV["HANAMI_ENV"] = "production"
71
+ end
72
+
73
+ after do
74
+ ENV["HANAMI_ENV"] = @hanami_env
75
+ end
76
+
77
+ it "does not render the welcome page" do
78
+ get "/"
79
+
80
+ expect(last_response.body).to eq "Not Found"
81
+ expect(last_response.status).to eq 404
82
+ end
83
+ end
84
+ end
@@ -39,15 +39,14 @@ module RSpec
39
39
 
40
40
  def compile_assets!
41
41
  link_node_modules
42
+ generate_assets_config
42
43
 
43
44
  require "hanami/cli/command"
44
45
  require "hanami/cli/commands/app/command"
45
46
  require "hanami/cli/commands/app/assets/compile"
46
- compiler = Hanami::CLI::Commands::App::Assets::Compile.new(config: Hanami.app.config.assets)
47
+ assets_compile = Hanami::CLI::Commands::App::Assets::Compile.new(config: Hanami.app.config.assets)
47
48
 
48
- with_directory(Hanami.app.root) do
49
- compiler.call
50
- end
49
+ with_directory(Hanami.app.root) { assets_compile.call }
51
50
  end
52
51
 
53
52
  def link_node_modules
@@ -58,6 +57,25 @@ module RSpec
58
57
  FileUtils.ln_s(node_modules_path, root)
59
58
  rescue Errno::EEXIST # rubocop:disable Lint/SuppressedException
60
59
  end
60
+
61
+ def generate_assets_config
62
+ root = Hanami.app.root
63
+
64
+ with_directory(root) do
65
+ write("config/assets.mjs", <<~JS) unless root.join("config", "assets.mjs").exist?
66
+ import * as assets from "hanami-assets";
67
+ await assets.run();
68
+ JS
69
+
70
+ write("package.json", <<~JSON) unless root.join("package.json").exist?
71
+ {
72
+ "scripts": {
73
+ "assets": "node config/assets.mjs"
74
+ }
75
+ }
76
+ JSON
77
+ end
78
+ end
61
79
  end
62
80
  end
63
81
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Hanami::Helpers::AssetsHelper, "#audio_tag", :app_integration do
3
+ RSpec.describe Hanami::Helpers::AssetsHelper, "#audio", :app_integration do
4
4
  subject(:obj) {
5
5
  helpers = described_class
6
6
  Class.new {
@@ -84,7 +84,7 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#audio_tag", :app_integration do
84
84
  end
85
85
 
86
86
  xit "renders with sources" do
87
- actual = audio_tag do
87
+ actual = audio do
88
88
  tag.text "Your browser does not support the audio tag"
89
89
  tag.source src: subject.asset_url("song.ogg"), type: "audio/ogg"
90
90
  tag.source src: subject.asset_url("song.wav"), type: "audio/wav"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Hanami::Helpers::AssetsHelper, "#favicon_link_tag", :app_integration do
3
+ RSpec.describe Hanami::Helpers::AssetsHelper, "#favicon", :app_integration do
4
4
  subject(:obj) {
5
5
  helpers = described_class
6
6
  Class.new {
@@ -14,8 +14,8 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#favicon_link_tag", :app_integrat
14
14
  }.new(context)
15
15
  }
16
16
 
17
- def favicon_link_tag(...)
18
- obj.instance_eval { favicon_link_tag(...) }
17
+ def favicon_tag(...)
18
+ obj.instance_eval { favicon_tag(...) }
19
19
  end
20
20
 
21
21
  let(:root) { make_tmp_directory }
@@ -53,26 +53,22 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#favicon_link_tag", :app_integrat
53
53
  end
54
54
 
55
55
  it "returns an instance of SafeString" do
56
- actual = favicon_link_tag
56
+ actual = favicon_tag
57
57
  expect(actual).to be_instance_of(::Hanami::View::HTML::SafeString)
58
58
  end
59
59
 
60
- it "is aliased as `favicon`" do
61
- expect(subject.favicon).to eq favicon_link_tag
62
- end
63
-
64
60
  it "renders <link> tag" do
65
- actual = favicon_link_tag.to_s
61
+ actual = favicon_tag.to_s
66
62
  expect(actual).to eq(%(<link href="/assets/favicon.ico" rel="shortcut icon" type="image/x-icon">))
67
63
  end
68
64
 
69
65
  it "renders with HTML attributes" do
70
- actual = favicon_link_tag("favicon.png", rel: "icon", type: "image/png").to_s
66
+ actual = favicon_tag("favicon.png", rel: "icon", type: "image/png").to_s
71
67
  expect(actual).to eq(%(<link href="/assets/favicon.png" rel="icon" type="image/png">))
72
68
  end
73
69
 
74
70
  it "ignores href passed as an option" do
75
- actual = favicon_link_tag("favicon.png", href: "wrong").to_s
71
+ actual = favicon_tag("favicon.png", href: "wrong").to_s
76
72
  expect(actual).to eq(%(<link href="/assets/favicon.png" rel="shortcut icon" type="image/x-icon">))
77
73
  end
78
74
 
@@ -84,7 +80,7 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#favicon_link_tag", :app_integrat
84
80
  end
85
81
 
86
82
  it "returns absolute url for href attribute" do
87
- actual = favicon_link_tag.to_s
83
+ actual = favicon_tag.to_s
88
84
  expect(actual).to eq(%(<link href="#{base_url}/assets/favicon.ico" rel="shortcut icon" type="image/x-icon">))
89
85
  end
90
86
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Hanami::Helpers::AssetsHelper, "#image_tag", :app_integration do
3
+ RSpec.describe Hanami::Helpers::AssetsHelper, "#image", :app_integration do
4
4
  subject(:obj) {
5
5
  helpers = described_class
6
6
  Class.new {
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Hanami::Helpers::AssetsHelper, "#javascript_tag", :app_integration do
3
+ RSpec.describe Hanami::Helpers::AssetsHelper, "#javascript", :app_integration do
4
4
  subject(:obj) {
5
5
  helpers = described_class
6
6
  Class.new {
@@ -69,8 +69,8 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#javascript_tag", :app_integratio
69
69
  expect(actual).to be_instance_of(::Hanami::View::HTML::SafeString)
70
70
  end
71
71
 
72
- it "is aliased as `js`" do
73
- expect(subject.js("feature-a")).to eq javascript_tag("feature-a")
72
+ it "is aliased as #javascript_tag" do
73
+ expect(subject.javascript_tag("feature-a")).to eq javascript_tag("feature-a")
74
74
  end
75
75
 
76
76
  it "renders <script> tag" do
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Hanami::Helpers::AssetsHelper, "#stylesheet_link_tag", :app_integration do
3
+ RSpec.describe Hanami::Helpers::AssetsHelper, "#stylesheet", :app_integration do
4
4
  subject(:obj) {
5
5
  helpers = described_class
6
6
  Class.new {
@@ -14,8 +14,8 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#stylesheet_link_tag", :app_integ
14
14
  }.new(context)
15
15
  }
16
16
 
17
- def stylesheet_link_tag(...)
18
- subject.stylesheet_link_tag(...)
17
+ def stylesheet_tag(...)
18
+ subject.stylesheet_tag(...)
19
19
  end
20
20
 
21
21
  let(:context) { TestApp::Views::Context.new }
@@ -65,36 +65,36 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#stylesheet_link_tag", :app_integ
65
65
  end
66
66
 
67
67
  it "returns an instance of SafeString" do
68
- actual = stylesheet_link_tag("main")
68
+ actual = stylesheet_tag("main")
69
69
  expect(actual).to be_instance_of(::Hanami::View::HTML::SafeString)
70
70
  end
71
71
 
72
- it "is aliased as `css`" do
73
- expect(subject.css("main")).to eq stylesheet_link_tag("main")
72
+ it "is aliased as #stylesheet_tag" do
73
+ expect(subject.stylesheet_tag("main")).to eq stylesheet_tag("main")
74
74
  end
75
75
 
76
76
  it "renders <link> tag" do
77
- actual = stylesheet_link_tag("main")
77
+ actual = stylesheet_tag("main")
78
78
  expect(actual).to eq(%(<link href="/assets/main.css" type="text/css" rel="stylesheet">))
79
79
  end
80
80
 
81
81
  xit "renders <link> tag without appending ext after query string" do
82
- actual = stylesheet_link_tag("fonts?font=Helvetica")
82
+ actual = stylesheet_tag("fonts?font=Helvetica")
83
83
  expect(actual).to eq(%(<link href="/assets/fonts?font=Helvetica" type="text/css" rel="stylesheet">))
84
84
  end
85
85
 
86
86
  it "renders <link> tag with an integrity attribute" do
87
- actual = stylesheet_link_tag("main", integrity: "sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC")
87
+ actual = stylesheet_tag("main", integrity: "sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC")
88
88
  expect(actual).to eq(%(<link href="/assets/main.css" type="text/css" rel="stylesheet" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous">))
89
89
  end
90
90
 
91
91
  it "renders <link> tag with a crossorigin attribute" do
92
- actual = stylesheet_link_tag("main", integrity: "sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC", crossorigin: "use-credentials")
92
+ actual = stylesheet_tag("main", integrity: "sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC", crossorigin: "use-credentials")
93
93
  expect(actual).to eq(%(<link href="/assets/main.css" type="text/css" rel="stylesheet" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="use-credentials">))
94
94
  end
95
95
 
96
96
  it "ignores href passed as an option" do
97
- actual = stylesheet_link_tag("main", href: "wrong")
97
+ actual = stylesheet_tag("main", href: "wrong")
98
98
  expect(actual).to eq(%(<link href="/assets/main.css" type="text/css" rel="stylesheet">))
99
99
  end
100
100
 
@@ -106,7 +106,7 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#stylesheet_link_tag", :app_integ
106
106
  before { compile_assets! }
107
107
 
108
108
  it "includes subresource_integrity and crossorigin attributes" do
109
- actual = stylesheet_link_tag("app")
109
+ actual = stylesheet_tag("app")
110
110
  expect(actual).to match(%r{<link href="/assets/app-[A-Z0-9]{8}.css" type="text/css" rel="stylesheet" integrity="sha384-[A-Za-z0-9+/]{64}" crossorigin="anonymous">})
111
111
  end
112
112
  end
@@ -119,7 +119,7 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#stylesheet_link_tag", :app_integ
119
119
  end
120
120
 
121
121
  it "returns absolute url for href attribute" do
122
- actual = stylesheet_link_tag("main")
122
+ actual = stylesheet_tag("main")
123
123
  expect(actual).to eq(%(<link href="#{base_url}/assets/main.css" type="text/css" rel="stylesheet">))
124
124
  end
125
125
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Hanami::Helpers::AssetsHelper, "#video_tag", :app_integration do
3
+ RSpec.describe Hanami::Helpers::AssetsHelper, "#video", :app_integration do
4
4
  subject(:obj) {
5
5
  helpers = described_class
6
6
  Class.new {
@@ -62,6 +62,10 @@ RSpec.describe Hanami::Helpers::AssetsHelper, "#video_tag", :app_integration do
62
62
  expect(actual).to eq(%(<video src="/assets/movie.mp4"></video>))
63
63
  end
64
64
 
65
+ it "is aliased as #video_tag" do
66
+ expect(video_tag("movie.mp4")).to eq(subject.video_tag("movie.mp4"))
67
+ end
68
+
65
69
  it "renders with html attributes" do
66
70
  actual = video_tag("movie.mp4", autoplay: true, controls: true).to_s
67
71
  expect(actual).to eq(%(<video autoplay="autoplay" controls="controls" src="/assets/movie.mp4"></video>))
@@ -2,6 +2,6 @@
2
2
 
3
3
  RSpec.describe "Hanami::VERSION" do
4
4
  it "returns current version" do
5
- expect(Hanami::VERSION).to eq("2.1.0.beta2")
5
+ expect(Hanami::VERSION).to eq("2.1.0.rc1")
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.beta2
4
+ version: 2.1.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-04 00:00:00.000000000 Z
11
+ date: 2023-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -279,6 +279,7 @@ files:
279
279
  - lib/hanami/extensions/view/scope.rb
280
280
  - lib/hanami/extensions/view/slice_configured_context.rb
281
281
  - lib/hanami/extensions/view/slice_configured_helpers.rb
282
+ - lib/hanami/extensions/view/slice_configured_part.rb
282
283
  - lib/hanami/extensions/view/slice_configured_view.rb
283
284
  - lib/hanami/extensions/view/standard_helpers.rb
284
285
  - lib/hanami/helpers/assets_helper.rb
@@ -311,6 +312,8 @@ files:
311
312
  - lib/hanami/slice_registrar.rb
312
313
  - lib/hanami/version.rb
313
314
  - lib/hanami/web/rack_logger.rb
315
+ - lib/hanami/web/welcome.html.erb
316
+ - lib/hanami/web/welcome.rb
314
317
  - spec/integration/action/cookies_spec.rb
315
318
  - spec/integration/action/csrf_protection_spec.rb
316
319
  - spec/integration/action/format_config_spec.rb
@@ -341,6 +344,7 @@ files:
341
344
  - spec/integration/logging/notifications_spec.rb
342
345
  - spec/integration/logging/request_logging_spec.rb
343
346
  - spec/integration/rack_app/body_parser_spec.rb
347
+ - spec/integration/rack_app/method_override_spec.rb
344
348
  - spec/integration/rack_app/middleware_spec.rb
345
349
  - spec/integration/rack_app/non_booted_rack_app_spec.rb
346
350
  - spec/integration/rack_app/rack_app_spec.rb
@@ -376,10 +380,12 @@ files:
376
380
  - spec/integration/view/helpers/scope_helpers_spec.rb
377
381
  - spec/integration/view/helpers/user_defined_helpers/part_helpers_spec.rb
378
382
  - spec/integration/view/helpers/user_defined_helpers/scope_helpers_spec.rb
383
+ - spec/integration/view/parts/default_rendering_spec.rb
379
384
  - spec/integration/view/slice_configuration_spec.rb
380
385
  - spec/integration/view/views_spec.rb
381
386
  - spec/integration/web/render_detailed_errors_spec.rb
382
387
  - spec/integration/web/render_errors_spec.rb
388
+ - spec/integration/web/welcome_view_spec.rb
383
389
  - spec/spec_helper.rb
384
390
  - spec/support/app_integration.rb
385
391
  - spec/support/coverage.rb
@@ -407,10 +413,10 @@ files:
407
413
  - spec/unit/hanami/extensions/view/context_spec.rb
408
414
  - spec/unit/hanami/helpers/assets_helper/asset_url_spec.rb
409
415
  - spec/unit/hanami/helpers/assets_helper/audio_tag_spec.rb
410
- - spec/unit/hanami/helpers/assets_helper/favicon_link_tag_spec.rb
416
+ - spec/unit/hanami/helpers/assets_helper/favicon_tag_spec.rb
411
417
  - spec/unit/hanami/helpers/assets_helper/image_tag_spec.rb
412
418
  - spec/unit/hanami/helpers/assets_helper/javascript_tag_spec.rb
413
- - spec/unit/hanami/helpers/assets_helper/stylesheet_link_tag_spec.rb
419
+ - spec/unit/hanami/helpers/assets_helper/stylesheet_tag_spec.rb
414
420
  - spec/unit/hanami/helpers/assets_helper/video_tag_spec.rb
415
421
  - spec/unit/hanami/helpers/form_helper_spec.rb
416
422
  - spec/unit/hanami/port_spec.rb
@@ -479,6 +485,7 @@ test_files:
479
485
  - spec/integration/logging/notifications_spec.rb
480
486
  - spec/integration/logging/request_logging_spec.rb
481
487
  - spec/integration/rack_app/body_parser_spec.rb
488
+ - spec/integration/rack_app/method_override_spec.rb
482
489
  - spec/integration/rack_app/middleware_spec.rb
483
490
  - spec/integration/rack_app/non_booted_rack_app_spec.rb
484
491
  - spec/integration/rack_app/rack_app_spec.rb
@@ -514,10 +521,12 @@ test_files:
514
521
  - spec/integration/view/helpers/scope_helpers_spec.rb
515
522
  - spec/integration/view/helpers/user_defined_helpers/part_helpers_spec.rb
516
523
  - spec/integration/view/helpers/user_defined_helpers/scope_helpers_spec.rb
524
+ - spec/integration/view/parts/default_rendering_spec.rb
517
525
  - spec/integration/view/slice_configuration_spec.rb
518
526
  - spec/integration/view/views_spec.rb
519
527
  - spec/integration/web/render_detailed_errors_spec.rb
520
528
  - spec/integration/web/render_errors_spec.rb
529
+ - spec/integration/web/welcome_view_spec.rb
521
530
  - spec/spec_helper.rb
522
531
  - spec/support/app_integration.rb
523
532
  - spec/support/coverage.rb
@@ -545,10 +554,10 @@ test_files:
545
554
  - spec/unit/hanami/extensions/view/context_spec.rb
546
555
  - spec/unit/hanami/helpers/assets_helper/asset_url_spec.rb
547
556
  - spec/unit/hanami/helpers/assets_helper/audio_tag_spec.rb
548
- - spec/unit/hanami/helpers/assets_helper/favicon_link_tag_spec.rb
557
+ - spec/unit/hanami/helpers/assets_helper/favicon_tag_spec.rb
549
558
  - spec/unit/hanami/helpers/assets_helper/image_tag_spec.rb
550
559
  - spec/unit/hanami/helpers/assets_helper/javascript_tag_spec.rb
551
- - spec/unit/hanami/helpers/assets_helper/stylesheet_link_tag_spec.rb
560
+ - spec/unit/hanami/helpers/assets_helper/stylesheet_tag_spec.rb
552
561
  - spec/unit/hanami/helpers/assets_helper/video_tag_spec.rb
553
562
  - spec/unit/hanami/helpers/form_helper_spec.rb
554
563
  - spec/unit/hanami/port_spec.rb