2010-03-11 22:55:31 +03:00
|
|
|
# Redmine - project management software
|
|
|
|
# Copyright (C) 2006-2010 Jean-Philippe Lang
|
|
|
|
#
|
|
|
|
# This program is free software; you can redistribute it and/or
|
|
|
|
# modify it under the terms of the GNU General Public License
|
|
|
|
# as published by the Free Software Foundation; either version 2
|
|
|
|
# of the License, or (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with this program; if not, write to the Free Software
|
|
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
|
|
|
require File.dirname(__FILE__) + '/../../../../test_helper'
|
|
|
|
|
|
|
|
class Redmine::WikiFormatting::TextileFormatterTest < HelperTestCase
|
|
|
|
|
|
|
|
def setup
|
|
|
|
@formatter = Redmine::WikiFormatting::Textile::Formatter
|
|
|
|
end
|
|
|
|
|
|
|
|
MODIFIERS = {
|
|
|
|
"*" => 'strong', # bold
|
|
|
|
"_" => 'em', # italic
|
|
|
|
"+" => 'ins', # underline
|
|
|
|
"-" => 'del', # deleted
|
|
|
|
"^" => 'sup', # superscript
|
|
|
|
"~" => 'sub' # subscript
|
|
|
|
}
|
|
|
|
|
2010-03-12 16:43:11 +03:00
|
|
|
def test_modifiers
|
2010-03-12 18:17:53 +03:00
|
|
|
assert_html_output(
|
2010-03-12 16:43:11 +03:00
|
|
|
'*bold*' => '<strong>bold</strong>',
|
|
|
|
'before *bold*' => 'before <strong>bold</strong>',
|
|
|
|
'*bold* after' => '<strong>bold</strong> after',
|
|
|
|
'*two words*' => '<strong>two words</strong>',
|
|
|
|
'*two*words*' => '<strong>two*words</strong>',
|
|
|
|
'*two * words*' => '<strong>two * words</strong>',
|
|
|
|
'*two* *words*' => '<strong>two</strong> <strong>words</strong>',
|
|
|
|
'*(two)* *(words)*' => '<strong>(two)</strong> <strong>(words)</strong>',
|
|
|
|
# with class
|
2010-03-12 18:17:53 +03:00
|
|
|
'*(foo)two words*' => '<strong class="foo">two words</strong>'
|
|
|
|
)
|
2010-03-12 16:43:11 +03:00
|
|
|
end
|
|
|
|
|
2010-03-11 22:55:31 +03:00
|
|
|
def test_modifiers_combination
|
|
|
|
MODIFIERS.each do |m1, tag1|
|
|
|
|
MODIFIERS.each do |m2, tag2|
|
|
|
|
next if m1 == m2
|
|
|
|
text = "#{m2}#{m1}Phrase modifiers#{m1}#{m2}"
|
2010-03-12 18:19:49 +03:00
|
|
|
html = "<#{tag2}><#{tag1}>Phrase modifiers</#{tag1}></#{tag2}>"
|
2010-03-12 18:17:53 +03:00
|
|
|
assert_html_output text => html
|
2010-03-11 22:55:31 +03:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2010-03-12 18:12:23 +03:00
|
|
|
|
|
|
|
def test_inline_code
|
2010-03-12 18:17:53 +03:00
|
|
|
assert_html_output(
|
2010-03-12 18:12:23 +03:00
|
|
|
'this is @some code@' => 'this is <code>some code</code>',
|
2010-03-12 18:17:53 +03:00
|
|
|
'@<Location /redmine>@' => '<code><Location /redmine></code>'
|
|
|
|
)
|
2010-03-12 18:12:23 +03:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_escaping
|
2010-03-12 18:17:53 +03:00
|
|
|
assert_html_output(
|
|
|
|
'this is a <script>' => 'this is a <script>'
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def assert_html_output(to_test)
|
2010-03-12 18:12:23 +03:00
|
|
|
to_test.each do |text, expected|
|
|
|
|
assert_equal "<p>#{expected}</p>", @formatter.new(text).to_html
|
|
|
|
end
|
|
|
|
end
|
2010-03-11 22:55:31 +03:00
|
|
|
end
|