Skip to content

Commit 5ca6a9d

Browse files
committed
Share the view context in tests
1 parent 6a33362 commit 5ca6a9d

File tree

4 files changed

+24
-2
lines changed

4 files changed

+24
-2
lines changed

lib/view_component/test_helpers.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,15 @@ def assert_component_rendered
3838
# @return [Nokogiri::HTML5]
3939
def render_inline(component, **args, &block)
4040
@page = nil
41-
@rendered_content = vc_test_controller.view_context.render(component, args, &block)
41+
@rendered_content = vc_test_view_context.render(component, args, &block)
4242

43-
Nokogiri::HTML5.fragment(@rendered_content)
43+
fragment = Nokogiri::HTML5.fragment(@rendered_content)
44+
@vc_test_view_context = nil
45+
fragment
46+
end
47+
48+
def vc_test_view_context
49+
@vc_test_view_context ||= vc_test_controller.view_context
4450
end
4551

4652
# `JSON.parse`-d component output.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<%= @builder.label :foo do %>
2+
<%= content %>
3+
<% end %>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# frozen_string_literal: true
2+
3+
class CustomFormBuilderComponent < ViewComponent::Base
4+
def initialize(builder:)
5+
@builder = builder
6+
end
7+
end

test/sandbox/test/test_helper_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,10 @@ def test_with_request_url_under_constraint
4343
def test_vc_test_controller_exists
4444
assert vc_test_controller.is_a?(ActionController::Base)
4545
end
46+
47+
def test_vc_test_view_context_is_shared_reference
48+
builder = ActionView::Helpers::FormBuilder.new(nil, Object.new, vc_test_view_context, {})
49+
render_inline(CustomFormBuilderComponent.new(builder: builder)) { "Label content" }
50+
assert_selector("label[for=foo]", text: "Label content")
51+
end
4652
end

0 commit comments

Comments
 (0)