require 'abstract_unit'
class TagHelperTest < ActionView::TestCase
include RenderERBUtils
tests ActionView::Helpers::TagHelper
def test_tag
assert_equal "
", tag("br")
assert_equal "
", tag(:br, :clear => "left")
assert_equal "
", tag("br", nil, true)
end
def test_tag_options
str = tag("p", "class" => "show", :class => "elsewhere")
assert_match(/class="show"/, str)
assert_match(/class="elsewhere"/, str)
end
def test_tag_options_rejects_nil_option
assert_equal "
<script>evil_js</script>
", content_tag(:p, '') assert_equal "", content_tag(:p, '', nil, false) end def test_content_tag_with_block_in_erb buffer = render_erb("<%= content_tag(:div) do %>Hello world!<% end %>") assert_dom_equal "\n Hello\n
", view.render("test/content_tag_nested_in_content_tag") end def test_content_tag_with_escaped_array_class str = content_tag('p', "limelight", :class => ["song", "play>"]) assert_equal "limelight
", str str = content_tag('p', "limelight", :class => ["song", "play"]) assert_equal "limelight
", str end def test_content_tag_with_unescaped_array_class str = content_tag('p', "limelight", {:class => ["song", "play>"]}, false) assert_equal "\">limelight
", str end def test_cdata_section assert_equal "]]>", cdata_section("content
', content_tag('p', "content", :title => '"'.html_safe) end def test_data_tag_does_not_honor_html_safe_double_quotes_as_attributes assert_dom_equal 'content
', content_tag('p', "content", :data => { :title => '"'.html_safe }) end def test_skip_invalid_escaped_attributes ['&1;', 'dfa3;', '& #123;'].each do |escaped| assert_equal %(), tag('a', :href => escaped) end end def test_disable_escaping assert_equal '', tag('a', { :href => '&' }, false, false) end def test_data_attributes ['data', :data].each { |data| assert_dom_equal '', tag('a', { data => { :a_float => 3.14, :a_big_decimal => BigDecimal.new("-123.456"), :a_number => 1, :string => 'hello', :symbol => :foo, :array => [1, 2, 3], :hash => { :key => 'value'} } }) } end end