diff options
author | Marius Balteanu <marius.balteanu@zitec.com> | 2022-01-22 10:11:13 +0000 |
---|---|---|
committer | Marius Balteanu <marius.balteanu@zitec.com> | 2022-01-22 10:11:13 +0000 |
commit | 4807beaebf192dca34ea5661df0de0acb33e2e11 (patch) | |
tree | 36478100ecd35fbdbb34f58c225cb74b01ed0b34 | |
parent | a347d212b5e89c91e939015696ce099cb87527b7 (diff) | |
download | redmine-4807beaebf192dca34ea5661df0de0acb33e2e11.tar.gz redmine-4807beaebf192dca34ea5661df0de0acb33e2e11.zip |
Explicitly specify text formatting in the tests (#35952).
Patch by Go MAEDA.
git-svn-id: http://svn.redmine.org/redmine/trunk@21386 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | test/functional/issues_controller_test.rb | 80 | ||||
-rw-r--r-- | test/functional/projects_controller_test.rb | 40 | ||||
-rw-r--r-- | test/functional/wiki_controller_test.rb | 238 | ||||
-rw-r--r-- | test/helpers/application_helper_test.rb | 302 | ||||
-rw-r--r-- | test/integration/attachments_test.rb | 38 | ||||
-rw-r--r-- | test/unit/lib/redmine/field_format/field_format_test.rb | 12 | ||||
-rw-r--r-- | test/unit/lib/redmine/wiki_formatting/macros_test.rb | 303 | ||||
-rw-r--r-- | test/unit/mailer_test.rb | 4 |
8 files changed, 601 insertions, 416 deletions
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 14b4ea19a..f4c269c7e 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1701,31 +1701,33 @@ class IssuesControllerTest < Redmine::ControllerTest end def test_index_with_last_notes_column - get( - :index, - :params => { - :set_filter => 1, - :c => %w(subject last_notes) - } - ) - assert_response :success - assert_select 'table.issues thead th', 4 # columns: chekbox + id + subject + with_settings :text_formatting => 'textile' do + get( + :index, + :params => { + :set_filter => 1, + :c => %w(subject last_notes) + } + ) + assert_response :success + assert_select 'table.issues thead th', 4 # columns: chekbox + id + subject - assert_select 'td.last_notes[colspan="4"]', :text => 'Some notes with Redmine links: #2, r2.' - assert_select( - 'td.last_notes[colspan="4"]', - :text => 'A comment with inline image: and a reference to #1 and r2.' - ) - get( - :index, - :params => { - :set_filter => 1, - :c => %w(subject last_notes), - :format => 'pdf' - } - ) - assert_response :success - assert_equal 'application/pdf', response.media_type + assert_select 'td.last_notes[colspan="4"]', :text => 'Some notes with Redmine links: #2, r2.' + assert_select( + 'td.last_notes[colspan="4"]', + :text => 'A comment with inline image: and a reference to #1 and r2.' + ) + get( + :index, + :params => { + :set_filter => 1, + :c => %w(subject last_notes), + :format => 'pdf' + } + ) + assert_response :success + assert_equal 'application/pdf', response.media_type + end end def test_index_with_last_notes_column_should_display_private_notes_with_permission_only @@ -2893,20 +2895,22 @@ class IssuesControllerTest < Redmine::ControllerTest end def test_show_atom - get( - :show, - :params => { - :id => 2, - :format => 'atom' - } - ) - assert_response :success - assert_equal 'application/atom+xml', response.media_type - # Inline image - assert_select( - 'content', - :text => Regexp.new(Regexp.quote('http://test.host/attachments/download/10')) - ) + with_settings :text_formatting => 'textile' do + get( + :show, + :params => { + :id => 2, + :format => 'atom' + } + ) + assert_response :success + assert_equal 'application/atom+xml', response.media_type + # Inline image + assert_select( + 'content', + :text => Regexp.new(Regexp.quote('http://test.host/attachments/download/10')) + ) + end end def test_show_export_to_pdf diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 244187f76..837de343a 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -96,26 +96,28 @@ class ProjectsControllerTest < Redmine::ControllerTest end def test_index_as_list_should_format_column_value - get :index, :params => { - :c => ['name', 'status', 'short_description', 'homepage', 'parent_id', 'identifier', 'is_public', 'created_on', 'cf_3'], - :display_type => 'list' - } - assert_response :success + with_settings :text_formatting => 'textile' do + get :index, :params => { + :c => ['name', 'status', 'short_description', 'homepage', 'parent_id', 'identifier', 'is_public', 'created_on', 'cf_3'], + :display_type => 'list' + } + assert_response :success - project = Project.find(1) - assert_select 'table.projects' do - assert_select 'tr[id=?]', 'project-1' do - assert_select 'td.name a[href=?]', '/projects/ecookbook', :text => 'eCookbook' - assert_select 'td.status', :text => 'active' - assert_select 'td.short_description', :text => 'Recipes management application' - assert_select 'td.homepage a.external', :text => 'http://ecookbook.somenet.foo/' - assert_select 'td.identifier', :text => 'ecookbook' - assert_select 'td.is_public', :text => 'Yes' - assert_select 'td.created_on', :text => format_time(project.created_on) - assert_select 'td.cf_3.list', :text => 'Stable' - end - assert_select 'tr[id=?]', 'project-4' do - assert_select 'td.parent_id a[href=?]', '/projects/ecookbook', :text => 'eCookbook' + project = Project.find(1) + assert_select 'table.projects' do + assert_select 'tr[id=?]', 'project-1' do + assert_select 'td.name a[href=?]', '/projects/ecookbook', :text => 'eCookbook' + assert_select 'td.status', :text => 'active' + assert_select 'td.short_description', :text => 'Recipes management application' + assert_select 'td.homepage a.external', :text => 'http://ecookbook.somenet.foo/' + assert_select 'td.identifier', :text => 'ecookbook' + assert_select 'td.is_public', :text => 'Yes' + assert_select 'td.created_on', :text => format_time(project.created_on) + assert_select 'td.cf_3.list', :text => 'Stable' + end + assert_select 'tr[id=?]', 'project-4' do + assert_select 'td.parent_id a[href=?]', '/projects/ecookbook', :text => 'eCookbook' + end end end end diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index ef273f0f3..d5758cb09 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -30,13 +30,15 @@ class WikiControllerTest < Redmine::ControllerTest end def test_show_start_page - get :show, :params => {:project_id => 'ecookbook'} - assert_response :success + with_settings :text_formatting => 'textile' do + get :show, :params => {:project_id => 'ecookbook'} + assert_response :success - assert_select 'h1', :text => /CookBook documentation/ - # child_pages macro - assert_select 'ul.pages-hierarchy>li>a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image', - :text => 'Page with an inline image' + assert_select 'h1', :text => /CookBook documentation/ + # child_pages macro + assert_select 'ul.pages-hierarchy>li>a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image', + :text => 'Page with an inline image' + end end def test_export_link @@ -55,13 +57,15 @@ class WikiControllerTest < Redmine::ControllerTest end def test_show_page_with_name - get :show, :params => {:project_id => 1, :id => 'Another_page'} - assert_response :success + with_settings :text_formatting => 'textile' do + get :show, :params => {:project_id => 1, :id => 'Another_page'} + assert_response :success - assert_select 'h1', :text => /Another page/ - # Included page with an inline image - assert_select 'p', :text => /This is an inline image/ - assert_select 'img[src=?][alt=?]', '/attachments/download/3/logo.gif', 'This is a logo' + assert_select 'h1', :text => /Another page/ + # Included page with an inline image + assert_select 'p', :text => /This is an inline image/ + assert_select 'img[src=?][alt=?]', '/attachments/download/3/logo.gif', 'This is a logo' + end end def test_show_old_version @@ -147,19 +151,23 @@ class WikiControllerTest < Redmine::ControllerTest end def test_show_should_display_section_edit_links - @request.session[:user_id] = 2 - get :show, :params => {:project_id => 1, :id => 'Page with sections'} + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + get :show, :params => {:project_id => 1, :id => 'Page with sections'} - assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=1', 0 - assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=2' - assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=3' + assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=1', 0 + assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=2' + assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=3' + end end def test_show_current_version_should_display_section_edit_links - @request.session[:user_id] = 2 - get :show, :params => {:project_id => 1, :id => 'Page with sections', :version => 3} + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + get :show, :params => {:project_id => 1, :id => 'Page with sections', :version => 3} - assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=2' + assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_sections/edit?section=2' + end end def test_show_old_version_should_not_display_section_edit_links @@ -353,17 +361,19 @@ class WikiControllerTest < Redmine::ControllerTest end def test_edit_section - @request.session[:user_id] = 2 - get :edit, :params => {:project_id => 'ecookbook', :id => 'Page_with_sections', :section => 2} + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + get :edit, :params => {:project_id => 'ecookbook', :id => 'Page_with_sections', :section => 2} - assert_response :success + assert_response :success - page = WikiPage.find_by_title('Page_with_sections') - section, hash = Redmine::WikiFormatting::Textile::Formatter.new(page.content.text).get_section(2) + page = WikiPage.find_by_title('Page_with_sections') + section, hash = Redmine::WikiFormatting::Textile::Formatter.new(page.content.text).get_section(2) - assert_select 'textarea[name=?]', 'content[text]', :text => section - assert_select 'input[name=section][type=hidden][value="2"]' - assert_select 'input[name=section_hash][type=hidden][value=?]', hash + assert_select 'textarea[name=?]', 'content[text]', :text => section + assert_select 'input[name=section][type=hidden][value="2"]' + assert_select 'input[name=section_hash][type=hidden][value=?]', hash + end end def test_edit_invalid_section_should_respond_with_404 @@ -589,57 +599,61 @@ class WikiControllerTest < Redmine::ControllerTest end def test_update_section - @request.session[:user_id] = 2 - page = WikiPage.find_by_title('Page_with_sections') - section, hash = Redmine::WikiFormatting::Textile::Formatter.new(page.content.text).get_section(2) - text = page.content.text - - assert_no_difference 'WikiPage.count' do - assert_no_difference 'WikiContent.count' do - assert_difference 'WikiContentVersion.count' do - put :update, :params => { - :project_id => 1, - :id => 'Page_with_sections', - :content => { - :text => "New section content", - :version => 3 - }, - :section => 2, - :section_hash => hash - } + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + page = WikiPage.find_by(title: 'Page_with_sections') + section, hash = Redmine::WikiFormatting::Textile::Formatter.new(page.content.text).get_section(2) + text = page.content.text + + assert_no_difference 'WikiPage.count' do + assert_no_difference 'WikiContent.count' do + assert_difference 'WikiContentVersion.count' do + put :update, :params => { + :project_id => 1, + :id => 'Page_with_sections', + :content => { + :text => 'New section content', + :version => 3 + }, + :section => 2, + :section_hash => hash + } + end end end + assert_redirected_to '/projects/ecookbook/wiki/Page_with_sections#section-2' + assert_equal Redmine::WikiFormatting::Textile::Formatter.new(text).update_section(2, 'New section content'), page.reload.content.text end - assert_redirected_to '/projects/ecookbook/wiki/Page_with_sections#section-2' - assert_equal Redmine::WikiFormatting::Textile::Formatter.new(text).update_section(2, "New section content"), page.reload.content.text end def test_update_section_should_allow_stale_page_update - @request.session[:user_id] = 2 - page = WikiPage.find_by_title('Page_with_sections') - section, hash = Redmine::WikiFormatting::Textile::Formatter.new(page.content.text).get_section(2) - text = page.content.text - - assert_no_difference 'WikiPage.count' do - assert_no_difference 'WikiContent.count' do - assert_difference 'WikiContentVersion.count' do - put :update, :params => { - :project_id => 1, - :id => 'Page_with_sections', - :content => { - :text => "New section content", - :version => 2 # Current version is 3 - }, - :section => 2, - :section_hash => hash - } + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + page = WikiPage.find_by(title: 'Page_with_sections') + section, hash = Redmine::WikiFormatting::Textile::Formatter.new(page.content.text).get_section(2) + text = page.content.text + + assert_no_difference 'WikiPage.count' do + assert_no_difference 'WikiContent.count' do + assert_difference 'WikiContentVersion.count' do + put :update, :params => { + :project_id => 1, + :id => 'Page_with_sections', + :content => { + :text => 'New section content', + :version => 2 # Current version is 3 + }, + :section => 2, + :section_hash => hash + } + end end end + assert_redirected_to '/projects/ecookbook/wiki/Page_with_sections#section-2' + page.reload + assert_equal Redmine::WikiFormatting::Textile::Formatter.new(text).update_section(2, 'New section content'), page.content.text + assert_equal 4, page.content.version end - assert_redirected_to '/projects/ecookbook/wiki/Page_with_sections#section-2' - page.reload - assert_equal Redmine::WikiFormatting::Textile::Formatter.new(text).update_section(2, "New section content"), page.content.text - assert_equal 4, page.content.version end def test_update_section_should_not_allow_stale_section_update @@ -669,33 +683,37 @@ class WikiControllerTest < Redmine::ControllerTest end def test_preview - @request.session[:user_id] = 2 - post :preview, :params => { - :project_id => 1, - :id => 'CookBook_documentation', - :content => { - :comments => '', - :text => 'this is a *previewed text*', - :version => 3 - } - }, :xhr => true - assert_response :success - assert_select 'strong', :text => /previewed text/ + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + post :preview, :params => { + :project_id => 1, + :id => 'CookBook_documentation', + :content => { + :comments => '', + :text => 'this is a *previewed text*', + :version => 3 + } + }, :xhr => true + assert_response :success + assert_select 'strong', :text => /previewed text/ + end end def test_preview_new_page - @request.session[:user_id] = 2 - post :preview, :params => { - :project_id => 1, - :id => 'New page', - :content => { - :text => 'h1. New page', - :comments => '', - :version => 0 - } - }, :xhr => true - assert_response :success - assert_select 'h1', :text => /New page/ + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + post :preview, :params => { + :project_id => 1, + :id => 'New page', + :content => { + :text => 'h1. New page', + :comments => '', + :version => 0 + } + }, :xhr => true + assert_response :success + assert_select 'h1', :text => /New page/ + end end def test_history @@ -1134,25 +1152,29 @@ class WikiControllerTest < Redmine::ControllerTest end def test_show_html - @request.session[:user_id] = 2 - get :show, :params => {:project_id => 1, :format => 'html'} - assert_response :success + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + get :show, :params => {:project_id => 1, :format => 'html'} + assert_response :success - assert_equal 'text/html', @response.media_type - assert_equal "attachment; filename=\"CookBook_documentation.html\"; filename*=UTF-8''CookBook_documentation.html", - @response.headers['Content-Disposition'] - assert_select 'h1', :text => /CookBook documentation/ + assert_equal 'text/html', @response.media_type + assert_equal "attachment; filename=\"CookBook_documentation.html\"; filename*=UTF-8''CookBook_documentation.html", + @response.headers['Content-Disposition'] + assert_select 'h1', :text => /CookBook documentation/ + end end def test_show_versioned_html - @request.session[:user_id] = 2 - get :show, :params => {:project_id => 1, :format => 'html', :version => 2} - assert_response :success + with_settings :text_formatting => 'textile' do + @request.session[:user_id] = 2 + get :show, :params => {:project_id => 1, :format => 'html', :version => 2} + assert_response :success - assert_equal 'text/html', @response.media_type - assert_equal "attachment; filename=\"CookBook_documentation.html\"; filename*=UTF-8''CookBook_documentation.html", - @response.headers['Content-Disposition'] - assert_select 'h1', :text => /CookBook documentation v2/ + assert_equal 'text/html', @response.media_type + assert_equal "attachment; filename=\"CookBook_documentation.html\"; filename*=UTF-8''CookBook_documentation.html", + @response.headers['Content-Disposition'] + assert_select 'h1', :text => /CookBook documentation v2/ + end end def test_show_txt diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb index 50a3d579a..99727b956 100644 --- a/test/helpers/application_helper_test.rb +++ b/test/helpers/application_helper_test.rb @@ -115,7 +115,9 @@ class ApplicationHelperTest < Redmine::HelperTest 'http://www.redmine.org/example-' => '<a class="external" href="http://www.redmine.org/example-">http://www.redmine.org/example-</a>', } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_auto_links_with_non_ascii_characters @@ -123,7 +125,9 @@ class ApplicationHelperTest < Redmine::HelperTest "http://foo.bar/#{@russian_test}" => %|<a class="external" href="http://foo.bar/#{@russian_test}">http://foo.bar/#{@russian_test}</a>| } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_auto_mailto @@ -131,7 +135,9 @@ class ApplicationHelperTest < Redmine::HelperTest 'test@foo.bar' => '<a class="email" href="mailto:test@foo.bar">test@foo.bar</a>', 'test@www.foo.bar' => '<a class="email" href="mailto:test@www.foo.bar">test@www.foo.bar</a>', } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_inline_images @@ -153,7 +159,9 @@ class ApplicationHelperTest < Redmine::HelperTest 'with query string !http://foo.bar/image.cgi?a=1&b=2!' => 'with query string <img src="http://foo.bar/image.cgi?a=1&b=2" alt="" />' } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_inline_images_inside_tags @@ -164,8 +172,10 @@ class ApplicationHelperTest < Redmine::HelperTest p=. !bar.gif! RAW - assert textilizable(raw).include?('<img src="foo.png" alt="" />') - assert textilizable(raw).include?('<img src="bar.gif" alt="" />') + with_settings :text_formatting => 'textile' do + assert textilizable(raw).include?('<img src="foo.png" alt="" />') + assert textilizable(raw).include?('<img src="bar.gif" alt="" />') + end end def test_attached_images @@ -181,7 +191,9 @@ class ApplicationHelperTest < Redmine::HelperTest '<a href="http://foo.bar/"><img src="/attachments/download/3/logo.gif" title="This is a logo" alt="This is a logo" loading="lazy" /></a>', } attachments = Attachment.all - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments)} + end end def test_attached_images_on_issue @@ -196,8 +208,10 @@ class ApplicationHelperTest < Redmine::HelperTest !attached_on_journal.png!' RAW - assert textilizable(raw, :object => journal).include?("<img src=\"/attachments/download/#{attachment_1.id}/attached_on_issue.png\" alt=\"\" loading=\"lazy\" />") - assert textilizable(raw, :object => journal).include?("<img src=\"/attachments/download/#{attachment_2.id}/attached_on_journal.png\" alt=\"\" loading=\"lazy\" />") + with_settings :text_formatting => 'textile' do + assert textilizable(raw, :object => journal).include?("<img src=\"/attachments/download/#{attachment_1.id}/attached_on_issue.png\" alt=\"\" loading=\"lazy\" />") + assert textilizable(raw, :object => journal).include?("<img src=\"/attachments/download/#{attachment_2.id}/attached_on_journal.png\" alt=\"\" loading=\"lazy\" />") + end end def test_attached_images_with_textile_and_non_ascii_filename @@ -232,11 +246,13 @@ class ApplicationHelperTest < Redmine::HelperTest def test_attached_images_with_hires_naming attachment = Attachment.generate!(:filename => 'image@2x.png') - assert_equal( - %(<p><img src="/attachments/download/#{attachment.id}/image@2x.png" ) + - %(srcset="/attachments/download/#{attachment.id}/image@2x.png 2x" alt="" loading="lazy" /></p>), - textilizable("!image@2x.png!", :attachments => [attachment]) - ) + with_settings :text_formatting => 'textile' do + assert_equal( + %(<p><img src="/attachments/download/#{attachment.id}/image@2x.png" ) + + %(srcset="/attachments/download/#{attachment.id}/image@2x.png 2x" alt="" loading="lazy" /></p>), + textilizable("!image@2x.png!", :attachments => [attachment]) + ) + end end def test_attached_images_filename_extension @@ -296,7 +312,9 @@ class ApplicationHelperTest < Redmine::HelperTest } attachments = [a1, a2, a3, a4] - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments)} + end end def test_attached_images_should_read_later @@ -320,7 +338,9 @@ class ApplicationHelperTest < Redmine::HelperTest 'Inline image: <img src="/attachments/download/' + a2.id.to_s + '/testfile.PNG" alt="" loading="lazy" />', } attachments = [a1, a2] - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments)} + end ensure set_tmp_attachments_directory end @@ -351,7 +371,9 @@ class ApplicationHelperTest < Redmine::HelperTest '<a class="external" href="http://foo.bar/page?p=1&t=z&s=-">http://foo.bar/page?p=1&t=z&s=-</a>', 'This is an intern "link":/foo/bar-' => 'This is an intern <a href="/foo/bar-">link</a>' } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_textile_external_links_with_non_ascii_characters @@ -359,7 +381,9 @@ class ApplicationHelperTest < Redmine::HelperTest %|This is a "link":http://foo.bar/#{@russian_test}| => %|This is a <a href="http://foo.bar/#{@russian_test}" class="external">link</a>| } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_redmine_links @@ -549,15 +573,19 @@ class ApplicationHelperTest < Redmine::HelperTest 'user:foobar' => 'user:foobar', } @project = Project.find(1) - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed"} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed"} + end end def test_link_to_note_within_the_same_page - issue = Issue.find(1) - assert_equal '<p><a href="#note-14">#note-14</a></p>', textilizable('#note-14', :object => issue) + with_settings :text_formatting => 'textile' do + issue = Issue.find(1) + assert_equal '<p><a href="#note-14">#note-14</a></p>', textilizable('#note-14', :object => issue) - journal = Journal.find(2) - assert_equal '<p><a href="#note-2">#note-2</a></p>', textilizable('#note-2', :object => journal) + journal = Journal.find(2) + assert_equal '<p><a href="#note-2">#note-2</a></p>', textilizable('#note-2', :object => journal) + end end def test_user_links_with_email_as_login_name_should_not_be_parsed_textile @@ -603,10 +631,12 @@ class ApplicationHelperTest < Redmine::HelperTest def test_should_not_parse_redmine_links_inside_link raw = "r1 should not be parsed in http://example.com/url-r1/" html = '<a class="external" href="http://example.com/url-r1/">http://example.com/url-r1/</a>' - assert_match( - %r{<p><a class="changeset".*>r1</a> should not be parsed in #{html}</p>}, - textilizable(raw, :project => Project.find(1)) - ) + with_settings :text_formatting => 'textile' do + assert_match( + %r{<p><a class="changeset".*>r1</a> should not be parsed in #{html}</p>}, + textilizable(raw, :project => Project.find(1)) + ) + end end def test_redmine_links_with_a_different_project_before_current_project @@ -615,8 +645,10 @@ class ApplicationHelperTest < Redmine::HelperTest @project = Project.find(3) result1 = link_to("1.4.4", "/versions/#{vp1.id}", :class => "version") result2 = link_to("1.4.4", "/versions/#{vp3.id}", :class => "version") - assert_equal "<p>#{result1} #{result2}</p>", - textilizable("ecookbook:version:1.4.4 version:1.4.4") + with_settings :text_formatting => 'textile' do + assert_equal "<p>#{result1} #{result2}</p>", + textilizable('ecookbook:version:1.4.4 version:1.4.4') + end end def test_escaped_redmine_links_should_not_be_parsed @@ -633,7 +665,9 @@ class ApplicationHelperTest < Redmine::HelperTest 'source:/some/file' ] @project = Project.find(1) - to_test.each {|text| assert_equal "<p>#{text}</p>", textilizable("!" + text), "#{text} failed"} + with_settings :text_formatting => 'textile' do + to_test.each {|text| assert_equal "<p>#{text}</p>", textilizable("!#{text}"), "#{text} failed"} + end end def test_cross_project_redmine_links @@ -667,8 +701,10 @@ class ApplicationHelperTest < Redmine::HelperTest 'invalid:source:/some/file' => 'invalid:source:/some/file', } @project = Project.find(3) - to_test.each do |text, result| - assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" + with_settings :text_formatting => 'textile' do + to_test.each do |text, result| + assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" + end end end @@ -677,7 +713,9 @@ class ApplicationHelperTest < Redmine::HelperTest link = link_to("Test & Show.txt", "/versions/#{v.id}", :class => "version") @project = v.project - assert_equal "<p>#{link}</p>", textilizable('version:"Test & Show.txt"') + with_settings :text_formatting => 'textile' do + assert_equal "<p>#{link}</p>", textilizable('version:"Test & Show.txt"') + end end def test_link_to_issue_subject @@ -767,7 +805,9 @@ class ApplicationHelperTest < Redmine::HelperTest } @project = Project.find(1) - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed"} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed"} + end end def test_cross_project_multiple_repositories_redmine_links @@ -824,7 +864,9 @@ class ApplicationHelperTest < Redmine::HelperTest 'invalid:source:invalid|some/file' => 'invalid:source:invalid|some/file', } @project = Project.find(3) - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed"} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed"} + end end def test_redmine_links_git_commit @@ -853,7 +895,9 @@ class ApplicationHelperTest < Redmine::HelperTest to_test = { 'commit:abcd' => changeset_link, } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end # TODO: Bazaar commit id contains mail address, so it contains '@' and '_'. @@ -896,17 +940,21 @@ class ApplicationHelperTest < Redmine::HelperTest 'r123' => changeset_link_rev, 'commit:abcd' => changeset_link_commit, } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_attachment_links text = 'attachment:error281.txt' result = link_to("error281.txt", "/attachments/1", :class => "attachment") - assert_equal "<p>#{result}</p>", - textilizable(text, - :attachments => Issue.find(3).attachments), - "#{text} failed" + with_settings :text_formatting => 'textile' do + assert_equal "<p>#{result}</p>", + textilizable(text, + :attachments => Issue.find(3).attachments), + "#{text} failed" + end end def test_attachment_link_should_link_to_latest_attachment @@ -914,8 +962,10 @@ class ApplicationHelperTest < Redmine::HelperTest a2 = Attachment.generate!(:filename => "test.txt") result = link_to("test.txt", "/attachments/#{a2.id}", :class => "attachment") - assert_equal "<p>#{result}</p>", - textilizable('attachment:test.txt', :attachments => [a1, a2]) + with_settings :text_formatting => 'textile' do + assert_equal "<p>#{result}</p>", + textilizable('attachment:test.txt', :attachments => [a1, a2]) + end end def test_attachment_links_to_images_with_email_format_should_not_be_parsed @@ -1031,7 +1081,9 @@ class ApplicationHelperTest < Redmine::HelperTest '[[private-child:Wiki]]' => '[[private-child:Wiki]]', } @project = Project.find(1) - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_wiki_links_with_special_characters_should_work_in_textile @@ -1124,8 +1176,10 @@ class ApplicationHelperTest < Redmine::HelperTest :class => "wiki-page new"), } @project = Project.find(1) - to_test.each do |text, result| - assert_equal "<p>#{result}</p>", textilizable(text, :wiki_links => :local) + with_settings :text_formatting => 'textile' do + to_test.each do |text, result| + assert_equal "<p>#{result}</p>", textilizable(text, :wiki_links => :local) + end end end @@ -1184,9 +1238,11 @@ class ApplicationHelperTest < Redmine::HelperTest :class => "wiki-page new"), } @project = Project.find(1) - to_test.each do |text, result| - assert_equal "<p>#{result}</p>", - textilizable(WikiContent.new(:text => text, :page => page), :text) + with_settings :text_formatting => 'textile' do + to_test.each do |text, result| + assert_equal "<p>#{result}</p>", + textilizable(WikiContent.new(:text => text, :page => page), :text) + end end end @@ -1228,8 +1284,10 @@ class ApplicationHelperTest < Redmine::HelperTest :class => "wiki-page new"), } @project = Project.find(1) - to_test.each do |text, result| - assert_equal "<p>#{result}</p>", textilizable(text, :wiki_links => :anchor) + with_settings :text_formatting => 'textile' do + to_test.each do |text, result| + assert_equal "<p>#{result}</p>", textilizable(text, :wiki_links => :anchor) + end end end @@ -1254,7 +1312,9 @@ class ApplicationHelperTest < Redmine::HelperTest '<pre><code class=""onmouseover="alert(1)">text</code></pre>' => '<pre><code>text</code></pre>', '<pre class=""onmouseover="alert(1)">text</pre>' => '<pre>text</pre>', } - to_test.each {|text, result| assert_equal result, textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal result, textilizable(text)} + end end def test_allowed_html_tags @@ -1263,7 +1323,9 @@ class ApplicationHelperTest < Redmine::HelperTest "<notextile>no *textile* formatting</notextile>" => "no *textile* formatting", "<notextile>this is <tag>a tag</tag></notextile>" => "this is <tag>a tag</tag>" } - to_test.each {|text, result| assert_equal result, textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal result, textilizable(text)} + end end def test_pre_tags @@ -1283,7 +1345,9 @@ class ApplicationHelperTest < Redmine::HelperTest </pre> <p>After</p> EXPECTED - assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + with_settings :text_formatting => 'textile' do + assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + end end def test_pre_content_should_not_parse_wiki_and_redmine_links @@ -1315,7 +1379,9 @@ class ApplicationHelperTest < Redmine::HelperTest </pre> EXPECTED @project = Project.find(1) - assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + with_settings :text_formatting => 'textile' do + assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + end end def test_non_closing_pre_blocks_should_be_closed @@ -1327,7 +1393,9 @@ class ApplicationHelperTest < Redmine::HelperTest </code></pre> EXPECTED @project = Project.find(1) - assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + with_settings :text_formatting => 'textile' do + assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + end end def test_unbalanced_closing_pre_tag_should_not_error @@ -1346,7 +1414,9 @@ class ApplicationHelperTest < Redmine::HelperTest expected = <<~EXPECTED <pre><code class="ECMA_script syntaxhl" data-language=\"ECMA_script\"><span class="cm">/* Hello */</span><span class="nb">document</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="dl">"</span><span class="s2">Hello World!</span><span class="dl">"</span><span class="p">);</span></code></pre> EXPECTED - assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + with_settings :text_formatting => 'textile' do + assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(raw).gsub(%r{[\r\n\t]}, '') + end end def test_syntax_highlight_ampersand_in_textile @@ -1383,7 +1453,9 @@ class ApplicationHelperTest < Redmine::HelperTest "<td>#{link2}</td>" + "</tr><tr><td>Cell 21</td><td>#{link3}</td></tr>" @project = Project.find(1) - assert_equal "<table>#{result}</table>", textilizable(text).gsub(/[\t\n]/, '') + with_settings :text_formatting => 'textile' do + assert_equal "<table>#{result}</table>", textilizable(text).gsub(/[\t\n]/, '') + end end def test_text_formatting @@ -1396,12 +1468,16 @@ class ApplicationHelperTest < Redmine::HelperTest 'a *H* umane *W* eb *T* ext *G* enerator' => 'a <strong>H</strong> umane <strong>W</strong> eb <strong>T</strong> ext <strong>G</strong> enerator', } - to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + with_settings :text_formatting => 'textile' do + to_test.each {|text, result| assert_equal "<p>#{result}</p>", textilizable(text)} + end end def test_wiki_horizontal_rule - assert_equal '<hr />', textilizable('---') - assert_equal '<p>Dashes: ---</p>', textilizable('Dashes: ---') + with_settings :text_formatting => 'textile' do + assert_equal '<hr />', textilizable('---') + assert_equal '<p>Dashes: ---</p>', textilizable('Dashes: ---') + end end def test_headings @@ -1409,7 +1485,9 @@ class ApplicationHelperTest < Redmine::HelperTest expected = %|<a name="Some-heading"></a>\n<h1 >Some heading| + %|<a href="#Some-heading" class="wiki-anchor">¶</a></h1>| - assert_equal expected, textilizable(raw) + with_settings :text_formatting => 'textile' do + assert_equal expected, textilizable(raw) + end end def test_headings_with_special_chars @@ -1420,7 +1498,9 @@ class ApplicationHelperTest < Redmine::HelperTest expected = %|<a name="#{anchor}"></a>\n<h1 >Some heading related to version 0.5| + %|<a href="##{anchor}" class="wiki-anchor">¶</a></h1>| - assert_equal expected, textilizable(raw) + with_settings :text_formatting => 'textile' do + assert_equal expected, textilizable(raw) + end end def test_headings_in_wiki_single_page_export_should_be_prepended_with_page_title @@ -1429,7 +1509,9 @@ class ApplicationHelperTest < Redmine::HelperTest expected = %|<a name="Page_Title_Some-heading"></a>\n<h1 >Some heading| + %|<a href="#Page_Title_Some-heading" class="wiki-anchor">¶</a></h1>| - assert_equal expected, textilizable(content, :text, :wiki_links => :anchor) + with_settings :text_formatting => 'textile' do + assert_equal expected, textilizable(content, :text, :wiki_links => :anchor) + end end def test_table_of_content @@ -1491,7 +1573,9 @@ class ApplicationHelperTest < Redmine::HelperTest '</ul>' @project = Project.find(1) - assert textilizable(raw).delete("\n").include?(expected) + with_settings :text_formatting => 'textile' do + assert textilizable(raw).delete("\n").include?(expected) + end end def test_table_of_content_should_generate_unique_anchors @@ -1515,10 +1599,12 @@ class ApplicationHelperTest < Redmine::HelperTest '</li>' + '</ul>' @project = Project.find(1) - result = textilizable(raw).delete("\n") - assert_include expected, result - assert_include '<a name="Subtitle">', result - assert_include '<a name="Subtitle-2">', result + with_settings :text_formatting => 'textile' do + result = textilizable(raw).delete("\n") + assert_include expected, result + assert_include '<a name="Subtitle">', result + assert_include '<a name="Subtitle-2">', result + end end def test_table_of_content_should_contain_included_page_headings @@ -1536,7 +1622,9 @@ class ApplicationHelperTest < Redmine::HelperTest '<li><a href="#Child-page-1">Child page 1</a></li>' + '</ul>' @project = Project.find(1) - assert textilizable(raw).delete("\n").include?(expected) + with_settings :text_formatting => 'textile' do + assert textilizable(raw).delete("\n").include?(expected) + end end def test_toc_with_textile_formatting_should_be_parsed @@ -1581,40 +1669,42 @@ class ApplicationHelperTest < Redmine::HelperTest RAW @project = Project.find(1) set_language_if_valid 'en' - result = - textilizable( - raw, - :edit_section_links => - {:controller => 'wiki', :action => 'edit', - :project_id => '1', :id => 'Test'} - ).delete("\n") - # heading that contains inline code - assert_match( - Regexp.new( - '<div class="contextual heading-2" title="Edit this section" id="section-4">' \ - '<a class="icon-only icon-edit" href="/projects/1/wiki/Test/edit\?section=4">' \ - 'Edit this section' \ - '</a></div>' \ - '<a name="Subtitle-with-inline-code"></a>' \ - '<h2 >Subtitle with ' \ - '<code>inline code</code><a href="#Subtitle-with-inline-code" class="wiki-anchor">¶</a>' \ - '</h2>' - ), - result - ) - # last heading - assert_match( - Regexp.new( - '<div class="contextual heading-2" title="Edit this section" id="section-5">' \ - '<a class="icon-only icon-edit" href="/projects/1/wiki/Test/edit\?section=5">' \ - 'Edit this section' \ - '</a></div>' \ - '<a name="Subtitle-after-pre-tag"></a>' \ - '<h2 >Subtitle after pre tag' \ - '<a href="#Subtitle-after-pre-tag" class="wiki-anchor">¶</a></h2>' - ), - result - ) + with_settings :text_formatting => 'textile' do + result = + textilizable( + raw, + :edit_section_links => + {:controller => 'wiki', :action => 'edit', + :project_id => '1', :id => 'Test'} + ).delete("\n") + # heading that contains inline code + assert_match( + Regexp.new( + '<div class="contextual heading-2" title="Edit this section" id="section-4">' \ + '<a class="icon-only icon-edit" href="/projects/1/wiki/Test/edit\?section=4">' \ + 'Edit this section' \ + '</a></div>' \ + '<a name="Subtitle-with-inline-code"></a>' \ + '<h2 >Subtitle with ' \ + '<code>inline code</code><a href="#Subtitle-with-inline-code" class="wiki-anchor">¶</a>' \ + '</h2>' + ), + result + ) + # last heading + assert_match( + Regexp.new( + '<div class="contextual heading-2" title="Edit this section" id="section-5">' \ + '<a class="icon-only icon-edit" href="/projects/1/wiki/Test/edit\?section=5">' \ + 'Edit this section' \ + '</a></div>' \ + '<a name="Subtitle-after-pre-tag"></a>' \ + '<h2 >Subtitle after pre tag' \ + '<a href="#Subtitle-after-pre-tag" class="wiki-anchor">¶</a></h2>' + ), + result + ) + end end def test_default_formatter @@ -1633,7 +1723,9 @@ class ApplicationHelperTest < Redmine::HelperTest end def test_textilizable_with_formatting_set_to_true_should_format_text - assert_equal '<p><strong>text</strong></p>', textilizable("*text*", :formatting => true) + with_settings :text_formatting => 'textile' do + assert_equal '<p><strong>text</strong></p>', textilizable("*text*", :formatting => true) + end end def test_parse_redmine_links_should_handle_a_tag_without_attributes diff --git a/test/integration/attachments_test.rb b/test/integration/attachments_test.rb index 14c96130b..197eda6aa 100644 --- a/test/integration/attachments_test.rb +++ b/test/integration/attachments_test.rb @@ -90,28 +90,30 @@ class AttachmentsTest < Redmine::IntegrationTest token = ajax_upload('myupload.jpg', 'JPEG content') - post( - '/issues/preview', - :params => { - :issue => {:tracker_id => 1, :project_id => 'ecookbook'}, - :text => 'Inline upload: !myupload.jpg!', - :attachments => { - '1' => { - :filename => 'myupload.jpg', - :description => 'My uploaded file', - :token => token + with_settings :text_formatting => 'textile' do + post( + '/issues/preview', + :params => { + :issue => {:tracker_id => 1, :project_id => 'ecookbook'}, + :text => 'Inline upload: !myupload.jpg!', + :attachments => { + '1' => { + :filename => 'myupload.jpg', + :description => 'My uploaded file', + :token => token + } } } - } - ) - assert_response :success + ) + assert_response :success - attachment_path = response.body.match(%r{<img src="(/attachments/download/\d+/myupload.jpg)"})[1] - assert_not_nil token, "No attachment path found in response:\n#{response.body}" + attachment_path = response.body.match(%r{<img src="(/attachments/download/\d+/myupload.jpg)"})[1] + assert_not_nil token, "No attachment path found in response:\n#{response.body}" - get attachment_path - assert_response :success - assert_equal 'JPEG content', response.body + get attachment_path + assert_response :success + assert_equal 'JPEG content', response.body + end end def test_upload_and_resubmit_after_validation_failure diff --git a/test/unit/lib/redmine/field_format/field_format_test.rb b/test/unit/lib/redmine/field_format/field_format_test.rb index 8d8874b36..5bcda2156 100644 --- a/test/unit/lib/redmine/field_format/field_format_test.rb +++ b/test/unit/lib/redmine/field_format/field_format_test.rb @@ -39,8 +39,10 @@ class Redmine::FieldFormatTest < ActionView::TestCase field = IssueCustomField.new(:field_format => 'string', :text_formatting => 'full') custom_value = CustomValue.new(:custom_field => field, :customized => Issue.new, :value => "*foo*") - assert_equal "*foo*", field.format.formatted_custom_value(self, custom_value, false) - assert_include "<strong>foo</strong>", field.format.formatted_custom_value(self, custom_value, true) + with_settings :text_formatting => 'textile' do + assert_equal '*foo*', field.format.formatted_custom_value(self, custom_value, false) + assert_include '<strong>foo</strong>', field.format.formatted_custom_value(self, custom_value, true) + end end def test_text_field_with_text_formatting_disabled_should_not_format_text @@ -55,8 +57,10 @@ class Redmine::FieldFormatTest < ActionView::TestCase field = IssueCustomField.new(:field_format => 'text', :text_formatting => 'full') custom_value = CustomValue.new(:custom_field => field, :customized => Issue.new, :value => "*foo*\nbar") - assert_equal "*foo*\nbar", field.format.formatted_custom_value(self, custom_value, false) - assert_include "<strong>foo</strong>", field.format.formatted_custom_value(self, custom_value, true) + with_settings :text_formatting => 'textile' do + assert_equal "*foo*\nbar", field.format.formatted_custom_value(self, custom_value, false) + assert_include '<strong>foo</strong>', field.format.formatted_custom_value(self, custom_value, true) + end end def test_should_validate_url_pattern_with_safe_scheme diff --git a/test/unit/lib/redmine/wiki_formatting/macros_test.rb b/test/unit/lib/redmine/wiki_formatting/macros_test.rb index 39448df31..28be28d47 100644 --- a/test/unit/lib/redmine/wiki_formatting/macros_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/macros_test.rb @@ -50,10 +50,12 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest end end - assert_equal '<p>Foo: 0 () (Array)</p>', textilizable("{{foo}}") - assert_equal '<p>Foo: 0 () (Array)</p>', textilizable("{{foo()}}") - assert_equal '<p>Foo: 1 (arg1) (Array)</p>', textilizable("{{foo(arg1)}}") - assert_equal '<p>Foo: 2 (arg1,arg2) (Array)</p>', textilizable("{{foo(arg1, arg2)}}") + with_settings :text_formatting => 'textile' do + assert_equal '<p>Foo: 0 () (Array)</p>', textilizable('{{foo}}') + assert_equal '<p>Foo: 0 () (Array)</p>', textilizable('{{foo()}}') + assert_equal '<p>Foo: 1 (arg1) (Array)</p>', textilizable('{{foo(arg1)}}') + assert_equal '<p>Foo: 2 (arg1,arg2) (Array)</p>', textilizable('{{foo(arg1, arg2)}}') + end end def test_macro_registration_parse_args_set_to_false_should_disable_arguments_parsing @@ -63,9 +65,11 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest end end - assert_equal '<p>Bar: (args, more args) (String)</p>', textilizable("{{bar(args, more args)}}") - assert_equal '<p>Bar: () (String)</p>', textilizable("{{bar}}") - assert_equal '<p>Bar: () (String)</p>', textilizable("{{bar()}}") + with_settings :text_formatting => 'textile' do + assert_equal '<p>Bar: (args, more args) (String)</p>', textilizable('{{bar(args, more args)}}') + assert_equal '<p>Bar: () (String)</p>', textilizable('{{bar}}') + assert_equal '<p>Bar: () (String)</p>', textilizable('{{bar()}}') + end end def test_macro_registration_with_3_args_should_receive_text_argument @@ -75,16 +79,19 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest end end - assert_equal "<p>Baz: () (NilClass) ()</p>", textilizable("{{baz}}") - assert_equal "<p>Baz: () (NilClass) ()</p>", textilizable("{{baz()}}") - assert_equal "<p>Baz: () (String) (line1\nline2)</p>", textilizable("{{baz()\nline1\nline2\n}}") - assert_equal "<p>Baz: (arg1,arg2) (String) (line1\nline2)</p>", textilizable("{{baz(arg1, arg2)\nline1\nline2\n}}") + with_settings :text_formatting => 'textile' do + assert_equal '<p>Baz: () (NilClass) ()</p>', textilizable('{{baz}}') + assert_equal '<p>Baz: () (NilClass) ()</p>', textilizable('{{baz()}}') + assert_equal "<p>Baz: () (String) (line1\nline2)</p>", textilizable("{{baz()\nline1\nline2\n}}") + assert_equal "<p>Baz: (arg1,arg2) (String) (line1\nline2)</p>", textilizable("{{baz(arg1, arg2)\nline1\nline2\n}}") + end end def test_macro_name_with_upper_case - Redmine::WikiFormatting::Macros.macro(:UpperCase) {|obj, args| "Upper"} - - assert_equal "<p>Upper</p>", textilizable("{{UpperCase}}") + with_settings :text_formatting => 'textile' do + Redmine::WikiFormatting::Macros.macro(:UpperCase) {|obj, args| 'Upper'} + assert_equal '<p>Upper</p>', textilizable('{{UpperCase}}') + end end def test_multiple_macros_on_the_same_line @@ -92,27 +99,33 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest args.any? ? "args: #{args.join(',')}" : "no args" end - assert_equal '<p>no args no args</p>', textilizable("{{foo}} {{foo}}") - assert_equal '<p>args: a,b no args</p>', textilizable("{{foo(a,b)}} {{foo}}") - assert_equal '<p>args: a,b args: c,d</p>', textilizable("{{foo(a,b)}} {{foo(c,d)}}") - assert_equal '<p>no args args: c,d</p>', textilizable("{{foo}} {{foo(c,d)}}") + with_settings :text_formatting => 'textile' do + assert_equal '<p>no args no args</p>', textilizable('{{foo}} {{foo}}') + assert_equal '<p>args: a,b no args</p>', textilizable('{{foo(a,b)}} {{foo}}') + assert_equal '<p>args: a,b args: c,d</p>', textilizable('{{foo(a,b)}} {{foo(c,d)}}') + assert_equal '<p>no args args: c,d</p>', textilizable('{{foo}} {{foo(c,d)}}') + end end def test_macro_should_receive_the_object_as_argument_when_with_object_and_attribute issue = Issue.find(1) issue.description = "{{hello_world}}" - assert_equal( - '<p>Hello world! Object: Issue, Called with no argument and no block of text.</p>', - textilizable(issue, :description) - ) + with_settings :text_formatting => 'textile' do + assert_equal( + '<p>Hello world! Object: Issue, Called with no argument and no block of text.</p>', + textilizable(issue, :description) + ) + end end def test_macro_should_receive_the_object_as_argument_when_called_with_object_option - text = "{{hello_world}}" - assert_equal( - '<p>Hello world! Object: Issue, Called with no argument and no block of text.</p>', - textilizable(text, :object => Issue.find(1)) - ) + with_settings :text_formatting => 'textile' do + text = '{{hello_world}}' + assert_equal( + '<p>Hello world! Object: Issue, Called with no argument and no block of text.</p>', + textilizable(text, :object => Issue.find(1)) + ) + end end def test_extract_macro_options_should_with_args @@ -153,35 +166,47 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest end def test_exclamation_mark_should_not_run_macros - text = "!{{hello_world}}" - assert_equal '<p>{{hello_world}}</p>', textilizable(text) + with_settings :text_formatting => 'textile' do + text = '!{{hello_world}}' + assert_equal '<p>{{hello_world}}</p>', textilizable(text) + end end def test_exclamation_mark_should_escape_macros - text = "!{{hello_world(<tag>)}}" - assert_equal '<p>{{hello_world(<tag>)}}</p>', textilizable(text) + with_settings :text_formatting => 'textile' do + text = '!{{hello_world(<tag>)}}' + assert_equal '<p>{{hello_world(<tag>)}}</p>', textilizable(text) + end end def test_unknown_macros_should_not_be_replaced - text = "{{unknown}}" - assert_equal '<p>{{unknown}}</p>', textilizable(text) + with_settings :text_formatting => 'textile' do + text = '{{unknown}}' + assert_equal '<p>{{unknown}}</p>', textilizable(text) + end end def test_unknown_macros_should_parsed_as_text - text = "{{unknown(*test*)}}" - assert_equal '<p>{{unknown(<strong>test</strong>)}}</p>', textilizable(text) + with_settings :text_formatting => 'textile' do + text = '{{unknown(*test*)}}' + assert_equal '<p>{{unknown(<strong>test</strong>)}}</p>', textilizable(text) + end end def test_unknown_macros_should_be_escaped - text = "{{unknown(<tag>)}}" - assert_equal '<p>{{unknown(<tag>)}}</p>', textilizable(text) + with_settings :text_formatting => 'textile' do + text = '{{unknown(<tag>)}}' + assert_equal '<p>{{unknown(<tag>)}}</p>', textilizable(text) + end end def test_html_safe_macro_output_should_not_be_escaped - Redmine::WikiFormatting::Macros.macro :safe_macro do |obj, args| - "<tag>".html_safe + with_settings :text_formatting => 'textile' do + Redmine::WikiFormatting::Macros.macro :safe_macro do |obj, args| + '<tag>'.html_safe + end + assert_equal '<p><tag></p>', textilizable('{{safe_macro}}') end - assert_equal '<p><tag></p>', textilizable("{{safe_macro}}") end def test_macro_hello_world @@ -220,33 +245,39 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest def test_macro_collapse text = "{{collapse\n*Collapsed* block of text\n}}" with_locale 'en' do - result = textilizable(text) + with_settings :text_formatting => 'textile' do + result = textilizable(text) - assert_select_in result, 'div.collapsed-text' - assert_select_in result, 'strong', :text => 'Collapsed' - assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Show' - assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Hide' + assert_select_in result, 'div.collapsed-text' + assert_select_in result, 'strong', :text => 'Collapsed' + assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Show' + assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Hide' + end end end def test_macro_collapse_with_one_arg text = "{{collapse(Example)\n*Collapsed* block of text\n}}" - result = textilizable(text) + with_settings :text_formatting => 'textile' do + result = textilizable(text) - assert_select_in result, 'div.collapsed-text' - assert_select_in result, 'strong', :text => 'Collapsed' - assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Example' - assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Example' + assert_select_in result, 'div.collapsed-text' + assert_select_in result, 'strong', :text => 'Collapsed' + assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Example' + assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Example' + end end def test_macro_collapse_with_two_args text = "{{collapse(Show example, Hide example)\n*Collapsed* block of text\n}}" - result = textilizable(text) + with_settings :text_formatting => 'textile' do + result = textilizable(text) - assert_select_in result, 'div.collapsed-text' - assert_select_in result, 'strong', :text => 'Collapsed' - assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Show example' - assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Hide example' + assert_select_in result, 'div.collapsed-text' + assert_select_in result, 'strong', :text => 'Collapsed' + assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Show example' + assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Hide example' + end end def test_macro_collapse_should_not_break_toc @@ -264,7 +295,9 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest expected_toc = '<ul class="toc"><li><strong>Table of contents</strong></li>' \ '<li><a href="#Title">Title</a><ul><li><a href="#Heading">Heading</a></li></ul></li></ul>' - assert_include expected_toc, textilizable(text).gsub(/[\r\n]/, '') + with_settings :text_formatting => 'textile' do + assert_include expected_toc, textilizable(text).gsub(/[\r\n]/, '') + end end def test_macro_child_pages @@ -276,13 +309,15 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest "<li><a href=\"/projects/ecookbook/wiki/Child_2\">Child 2</a></li>\n" \ "</ul>\n</p>" @project = Project.find(1) - # child pages of the current wiki page - assert_equal expected, textilizable("{{child_pages}}", :object => WikiPage.find(2).content) - # child pages of another page - assert_equal expected, textilizable("{{child_pages(Another_page)}}", :object => WikiPage.find(1).content) - - @project = Project.find(2) - assert_equal expected, textilizable("{{child_pages(ecookbook:Another_page)}}", :object => WikiPage.find(1).content) + with_settings :text_formatting => 'textile' do + # child pages of the current wiki page + assert_equal expected, textilizable('{{child_pages}}', :object => WikiPage.find(2).content) + # child pages of another page + assert_equal expected, textilizable('{{child_pages(Another_page)}}', :object => WikiPage.find(1).content) + + @project = Project.find(2) + assert_equal expected, textilizable('{{child_pages(ecookbook:Another_page)}}', :object => WikiPage.find(1).content) + end end def test_macro_child_pages_with_parent_option @@ -297,18 +332,20 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest "</ul>\n</li>\n</ul>\n</p>" @project = Project.find(1) - # child pages of the current wiki page - assert_equal expected, textilizable("{{child_pages(parent=1)}}", :object => WikiPage.find(2).content) - # child pages of another page - assert_equal( - expected, - textilizable("{{child_pages(Another_page, parent=1)}}", :object => WikiPage.find(1).content) - ) - @project = Project.find(2) - assert_equal( - expected, - textilizable("{{child_pages(ecookbook:Another_page, parent=1)}}", :object => WikiPage.find(1).content) - ) + with_settings :text_formatting => 'textile' do + # child pages of the current wiki page + assert_equal expected, textilizable('{{child_pages(parent=1)}}', :object => WikiPage.find(2).content) + # child pages of another page + assert_equal( + expected, + textilizable('{{child_pages(Another_page, parent=1)}}', :object => WikiPage.find(1).content) + ) + @project = Project.find(2) + assert_equal( + expected, + textilizable('{{child_pages(ecookbook:Another_page, parent=1)}}', :object => WikiPage.find(1).content) + ) + end end def test_macro_child_pages_with_depth_option @@ -318,7 +355,9 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest "<li><a href=\"/projects/ecookbook/wiki/Child_2\">Child 2</a></li>\n" \ "</ul>\n</p>" @project = Project.find(1) - assert_equal expected, textilizable("{{child_pages(depth=1)}}", :object => WikiPage.find(2).content) + with_settings :text_formatting => 'textile' do + assert_equal expected, textilizable("{{child_pages(depth=1)}}", :object => WikiPage.find(2).content) + end end def test_macro_child_pages_without_wiki_page_should_fail @@ -326,39 +365,47 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest end def test_macro_thumbnail - link = link_to('<img alt="testfile.PNG" src="/attachments/thumbnail/17/200" />'.html_safe, - "/attachments/17", - :class => "thumbnail", - :title => "testfile.PNG") - assert_equal "<p>#{link}</p>", - textilizable("{{thumbnail(testfile.png)}}", :object => Issue.find(14)) + with_settings :text_formatting => 'textile' do + link = link_to('<img alt="testfile.PNG" src="/attachments/thumbnail/17/200" />'.html_safe, + '/attachments/17', + :class => 'thumbnail', + :title => 'testfile.PNG') + assert_equal "<p>#{link}</p>", + textilizable('{{thumbnail(testfile.png)}}', :object => Issue.find(14)) + end end def test_macro_thumbnail_with_full_path - link = link_to('<img alt="testfile.PNG" src="http://test.host/attachments/thumbnail/17/200" />'.html_safe, - "http://test.host/attachments/17", - :class => "thumbnail", - :title => "testfile.PNG") - assert_equal "<p>#{link}</p>", - textilizable("{{thumbnail(testfile.png)}}", :object => Issue.find(14), :only_path => false) + with_settings :text_formatting => 'textile' do + link = link_to('<img alt="testfile.PNG" src="http://test.host/attachments/thumbnail/17/200" />'.html_safe, + 'http://test.host/attachments/17', + :class => 'thumbnail', + :title => 'testfile.PNG') + assert_equal "<p>#{link}</p>", + textilizable('{{thumbnail(testfile.png)}}', :object => Issue.find(14), :only_path => false) + end end def test_macro_thumbnail_with_size - link = link_to('<img alt="testfile.PNG" src="/attachments/thumbnail/17/400" />'.html_safe, - "/attachments/17", - :class => "thumbnail", - :title => "testfile.PNG") - assert_equal "<p>#{link}</p>", - textilizable("{{thumbnail(testfile.png, size=400)}}", :object => Issue.find(14)) + with_settings :text_formatting => 'textile' do + link = link_to('<img alt="testfile.PNG" src="/attachments/thumbnail/17/400" />'.html_safe, + '/attachments/17', + :class => 'thumbnail', + :title => 'testfile.PNG') + assert_equal "<p>#{link}</p>", + textilizable('{{thumbnail(testfile.png, size=400)}}', :object => Issue.find(14)) + end end def test_macro_thumbnail_with_title - link = link_to('<img alt="testfile.PNG" src="/attachments/thumbnail/17/200" />'.html_safe, - "/attachments/17", - :class => "thumbnail", - :title => "Cool image") - assert_equal "<p>#{link}</p>", - textilizable("{{thumbnail(testfile.png, title=Cool image)}}", :object => Issue.find(14)) + with_settings :text_formatting => 'textile' do + link = link_to('<img alt="testfile.PNG" src="/attachments/thumbnail/17/200" />'.html_safe, + '/attachments/17', + :class => 'thumbnail', + :title => 'Cool image') + assert_equal "<p>#{link}</p>", + textilizable('{{thumbnail(testfile.png, title=Cool image)}}', :object => Issue.find(14)) + end end def test_macro_thumbnail_with_invalid_filename_should_fail @@ -387,20 +434,26 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest <p>Hello world! Object: NilClass, Arguments: bar and no block of text.</p> EXPECTED - assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(text).gsub(%r{[\r\n\t]}, '') + with_settings :text_formatting => 'textile' do + assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(text).gsub(%r{[\r\n\t]}, '') + end end def test_macros_should_be_escaped_in_pre_tags - text = "<pre>{{hello_world(<tag>)}}</pre>" - assert_equal "<pre>{{hello_world(<tag>)}}</pre>", textilizable(text) + with_settings :text_formatting => 'textile' do + text = '<pre>{{hello_world(<tag>)}}</pre>' + assert_equal '<pre>{{hello_world(<tag>)}}</pre>', textilizable(text) + end end def test_macros_should_not_mangle_next_macros_outputs - text = '{{macro(2)}} !{{macro(2)}} {{hello_world(foo)}}' - assert_equal( - '<p>{{macro(2)}} {{macro(2)}} Hello world! Object: NilClass, Arguments: foo and no block of text.</p>', - textilizable(text) - ) + with_settings :text_formatting => 'textile' do + text = '{{macro(2)}} !{{macro(2)}} {{hello_world(foo)}}' + assert_equal( + '<p>{{macro(2)}} {{macro(2)}} Hello world! Object: NilClass, Arguments: foo and no block of text.</p>', + textilizable(text) + ) + end end def test_macros_with_text_should_not_mangle_following_macros @@ -421,26 +474,32 @@ class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest end def test_macro_should_support_phrase_modifiers - text = "*{{hello_world}}*" - assert_match %r|\A<p><strong>Hello world!.*</strong></p>\z|, textilizable(text) + with_settings :text_formatting => 'textile' do + text = '*{{hello_world}}*' + assert_match %r|\A<p><strong>Hello world!.*</strong></p>\z|, textilizable(text) + end end def test_issue_macro_should_not_render_link_if_not_visible - assert_equal "<p>#123</p>", textilizable('{{issue(123)}}') + with_settings :text_formatting => 'textile' do + assert_equal '<p>#123</p>', textilizable('{{issue(123)}}') + end end def test_issue_macro_should_render_link_to_issue issue = Issue.find(1) - assert_equal( - %{<p><a class="issue tracker-1 status-1 priority-4 priority-lowest behind-schedule" } + - %{href="/issues/1">Bug #1</a>: #{issue.subject}</p>}, - textilizable("{{issue(1)}}") - ) - assert_equal( - %{<p>eCookbook - } + - %{<a class="issue tracker-1 status-1 priority-4 priority-lowest behind-schedule" } + - %{href="/issues/1">Bug #1</a>: #{issue.subject}</p>}, - textilizable("{{issue(1, project=true)}}") - ) + with_settings :text_formatting => 'textile' do + assert_equal( + %{<p><a class="issue tracker-1 status-1 priority-4 priority-lowest behind-schedule" } + + %{href="/issues/1">Bug #1</a>: #{issue.subject}</p>}, + textilizable('{{issue(1)}}') + ) + assert_equal( + %{<p>eCookbook - } + + %{<a class="issue tracker-1 status-1 priority-4 priority-lowest behind-schedule" } + + %{href="/issues/1">Bug #1</a>: #{issue.subject}</p>}, + textilizable('{{issue(1, project=true)}}') + ) + end end end diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb index 4e75ef874..7ee682c06 100644 --- a/test/unit/mailer_test.rb +++ b/test/unit/mailer_test.rb @@ -997,7 +997,7 @@ class MailerTest < ActiveSupport::TestCase end def test_layout_should_include_the_emails_header - with_settings :emails_header => "*Header content*" do + with_settings :emails_header => '*Header content*', :text_formatting => 'textile' do with_settings :plain_text_mail => 0 do assert Mailer.test_email(User.find(1)).deliver_now assert_select_email do @@ -1024,7 +1024,7 @@ class MailerTest < ActiveSupport::TestCase end def test_layout_should_include_the_emails_footer - with_settings :emails_footer => "*Footer content*" do + with_settings :emails_footer => '*Footer content*', :text_formatting => 'textile' do with_settings :plain_text_mail => 0 do assert Mailer.test_email(User.find(1)).deliver_now assert_select_email do |