diff options
author | Marius Balteanu <marius.balteanu@zitec.com> | 2021-08-15 21:00:16 +0000 |
---|---|---|
committer | Marius Balteanu <marius.balteanu@zitec.com> | 2021-08-15 21:00:16 +0000 |
commit | b7798e6e1c0c5db75b20a83a6ba4a96f83052392 (patch) | |
tree | 10c2d0bc89a404d43f38a41080ab9475241a2df1 /test/unit | |
parent | 5699253da6330447f7a7d3b4cf8a238f9d4608cf (diff) | |
download | redmine-b7798e6e1c0c5db75b20a83a6ba4a96f83052392.tar.gz redmine-b7798e6e1c0c5db75b20a83a6ba4a96f83052392.zip |
Unify code block and add "data-language" attribute with the user-supplied language for Textile and Markdown formaters (#35104).
Patch by Martin Cizek.
git-svn-id: http://svn.redmine.org/redmine/trunk@21183 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb | 12 | ||||
-rw-r--r-- | test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb | 32 |
2 files changed, 35 insertions, 9 deletions
diff --git a/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb index c1264f77b..5be1521a5 100644 --- a/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb @@ -70,6 +70,7 @@ class Redmine::WikiFormatting::MarkdownFormatterTest < ActionView::TestCase STR assert_select_in @formatter.new(text).to_html, 'pre code.ruby.syntaxhl' do assert_select 'span.k', :text => 'def' + assert_select "[data-language='ruby']" end end @@ -79,7 +80,16 @@ class Redmine::WikiFormatting::MarkdownFormatterTest < ActionView::TestCase test ~~~ STR - assert_equal "<pre>test\n</pre>", @formatter.new(text).to_html + assert_equal "<pre><code data-language=\"foo\">test\n</code></pre>", @formatter.new(text).to_html + end + + def test_should_preserve_code_block_language_in_data_language + text = <<~STR + ~~~c-k&r + test + ~~~ + STR + assert_equal "<pre><code data-language=\"c-k&r\">test\n</code></pre>", @formatter.new(text).to_html end def test_external_links_should_have_external_css_class diff --git a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb index 5ee4defe1..3a8e0ad0f 100644 --- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb @@ -596,12 +596,16 @@ class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase end def test_should_not_allow_arbitrary_class_attribute_on_offtags - %w(code pre kbd).each do |tag| - assert_html_output({"<#{tag} class=\"foo\">test</#{tag}>" => "<#{tag}>test</#{tag}>"}, false) - assert_html_output({"<#{tag} class='foo'>test</#{tag}>" => "<#{tag}>test</#{tag}>"}, false) - assert_html_output({"<#{tag} class=\"ruby foo\">test</#{tag}>" => "<#{tag}>test</#{tag}>"}, false) - assert_html_output({"<#{tag} class='ruby foo'>test</#{tag}>" => "<#{tag}>test</#{tag}>"}, false) - assert_html_output({"<#{tag} class=\"ruby \"foo\" bar\">test</#{tag}>" => "<#{tag}>test</#{tag}>"}, false) + { + "class=\"foo\"" => "data-language=\"foo\"", + "class='foo'" => "data-language=\"foo\"", + "class=\"ruby foo\"" => "data-language=\"ruby foo\"", + "class='ruby foo'" => "data-language=\"ruby foo\"", + "class=\"ruby \"foo\" bar\"" => "data-language=\"ruby \"", + }.each do |classattr, codeattr| + assert_html_output({"<code #{classattr}>test</code>" => "<code #{codeattr}>test</code>"}, false) + assert_html_output({"<pre #{classattr}>test</pre>" => "<pre>test</pre>"}, false) + assert_html_output({"<kbd #{classattr}>test</kbd>" => "<kbd>test</kbd>"}, false) end assert_html_output({"<notextile class=\"foo\">test</notextile>" => "test"}, false) @@ -615,13 +619,25 @@ class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase # language name is double-quoted assert_html_output( {"<code class=\"ruby\">test</code>" => - "<code class=\"ruby syntaxhl\"><span class=\"nb\">test</span></code>"}, + "<code class=\"ruby syntaxhl\" data-language=\"ruby\"><span class=\"nb\">test</span></code>"}, false ) # language name is single-quoted assert_html_output( {"<code class='ruby'>test</code>" => - "<code class=\"ruby syntaxhl\"><span class=\"nb\">test</span></code>"}, + "<code class=\"ruby syntaxhl\" data-language=\"ruby\"><span class=\"nb\">test</span></code>"}, + false + ) + end + + def test_should_preserve_code_language_class_attribute_in_data_language + assert_html_output( + { + "<code class=\"foolang\">unsupported language</code>" => + "<code data-language=\"foolang\">unsupported language</code>", + "<code class=\"c-k&r\">special-char language</code>" => + "<code data-language=\"c-k&r\">special-char language</code>", + }, false ) end |