From 44b93174b400df2a1efbed36be698fa349f62fde Mon Sep 17 00:00:00 2001 From: DualFroz Date: Sun, 13 Sep 2026 23:35:39 +0200 Subject: [PATCH] test: cover ViewHelpersTest and render --- test/test_view_helpers.rb | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 test/test_view_helpers.rb diff --git a/test/test_view_helpers.rb b/test/test_view_helpers.rb new file mode 100644 index 0000000..4bfaa00 --- /dev/null +++ b/test/test_view_helpers.rb @@ -0,0 +1,68 @@ +require 'minitest/autorun' +require 'prism' + +class ViewHelpersTest < Minitest::Test + def render(source, locals = {}, helpers = nil) + Prism::Template.render(source, locals, nil, helpers) + end + + def test_tag_renders_void_element + assert_equal '
', render('<%== tag(:br, class: "hint") %>') + end + + def test_tag_omits_false_and_nil_attributes + assert_equal '', render('<%== tag(:input, disabled: false, value: nil) %>') + end + + def test_tag_boolean_true_attribute_renders_itself + assert_equal '', render('<%== tag(:input, disabled: true) %>') + end + + def test_content_tag_without_block_escapes_content + result = render('<%== content_tag(:p, "hi") %>') + assert_equal '

<b>hi</b>

', result + end + + def test_content_tag_with_block_appends_inline_and_nests + template = '<% content_tag(:div, class: "wrap") do %><%= "safe & sound" %><% end %>' + assert_equal '
safe & sound
', render(template) + end + + def test_content_tag_block_form_can_nest_helpers + template = <<~ERB + <% content_tag(:div) do %> + <%== link_to("Home", "/") %> + <% end %> + ERB + result = render(template) + assert_includes result, '
' + assert_includes result, 'Home' + assert result.index('
') < result.index('') + end + + def test_link_to_builds_anchor + assert_equal 'Posts', render('<%== link_to("Posts", "/posts") %>') + end + + def test_link_to_escapes_text + assert_equal '<script>', render('<%== link_to("