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("