Redmine 4.1.1
This commit is contained in:
parent
33e7b881a5
commit
3d976f1b3b
1593 changed files with 36180 additions and 19489 deletions
|
@ -1,7 +1,7 @@
|
|||
# encoding: utf-8
|
||||
#
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Redmine - project management software
|
||||
# Copyright (C) 2006-2017 Jean-Philippe Lang
|
||||
# Copyright (C) 2006-2019 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
|
||||
|
@ -36,7 +36,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
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'
|
||||
:text => 'Page with an inline image'
|
||||
end
|
||||
|
||||
def test_export_link
|
||||
|
@ -65,7 +65,6 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/1', :text => /Previous/
|
||||
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/2/diff', :text => /diff/
|
||||
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/3', :text => /Next/
|
||||
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation', :text => /Current version/
|
||||
end
|
||||
|
||||
def test_show_old_version_with_attachments
|
||||
|
@ -77,7 +76,6 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
get :show, :params => {:project_id => 'ecookbook', :id => page.title, :version => '1'}
|
||||
assert_response :success
|
||||
assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image', :text => /Current version/
|
||||
end
|
||||
|
||||
def test_show_old_version_without_permission_should_be_denied
|
||||
|
@ -96,7 +94,6 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
assert_select 'a', :text => /Previous/, :count => 0
|
||||
assert_select 'a', :text => /diff/, :count => 0
|
||||
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/2', :text => /Next/
|
||||
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation', :text => /Current version/
|
||||
end
|
||||
|
||||
def test_show_redirected_page
|
||||
|
@ -179,6 +176,16 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
assert_select 'textarea[name=?]', 'content[text]'
|
||||
end
|
||||
|
||||
def test_show_protected_page_shoud_show_locked_badge
|
||||
@request.session[:user_id] = 2
|
||||
|
||||
get :show, :params => {:project_id => 1, :id => 'CookBook_documentation'}
|
||||
|
||||
assert_select 'p.wiki-update-info' do
|
||||
assert_select 'span.badge.badge-status-locked'
|
||||
end
|
||||
end
|
||||
|
||||
def test_get_new
|
||||
@request.session[:user_id] = 2
|
||||
|
||||
|
@ -210,6 +217,13 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
assert_equal 'window.location = "/projects/ecookbook/wiki/New_Page"', response.body
|
||||
end
|
||||
|
||||
def test_post_new_should_redirect_to_edit_with_parent
|
||||
@request.session[:user_id] = 2
|
||||
|
||||
post :new, :params => {:project_id => 'ecookbook', :title => 'New_Page', :parent => 'Child_1'}
|
||||
assert_redirected_to '/projects/ecookbook/wiki/New_Page?parent=Child_1'
|
||||
end
|
||||
|
||||
def test_post_new_with_invalid_title_should_display_errors
|
||||
@request.session[:user_id] = 2
|
||||
|
||||
|
@ -259,6 +273,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
end
|
||||
|
||||
def test_create_page_with_attachments
|
||||
set_tmp_attachments_directory
|
||||
@request.session[:user_id] = 2
|
||||
assert_difference 'WikiPage.count' do
|
||||
assert_difference 'Attachment.count' do
|
||||
|
@ -299,11 +314,9 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
def test_edit_page
|
||||
@request.session[:user_id] = 2
|
||||
get :edit, :params => {:project_id => 'ecookbook', :id => 'Another_page'}
|
||||
|
||||
assert_response :success
|
||||
|
||||
assert_select 'textarea[name=?]', 'content[text]',
|
||||
:text => WikiPage.find_by_title('Another_page').content.text
|
||||
:text => WikiPage.find_by_title('Another_page').content.text
|
||||
end
|
||||
|
||||
def test_edit_section
|
||||
|
@ -331,7 +344,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
@request.session[:user_id] = 2
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_difference 'WikiContent::Version.count' do
|
||||
assert_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Another_page',
|
||||
|
@ -356,7 +369,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
@request.session[:user_id] = 2
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_difference 'WikiContent::Version.count' do
|
||||
assert_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Another_page',
|
||||
|
@ -383,7 +396,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
@request.session[:user_id] = 2
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_no_difference 'WikiContent::Version.count' do
|
||||
assert_no_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Another_page',
|
||||
|
@ -409,7 +422,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
@request.session[:user_id] = 2
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_no_difference 'WikiContent::Version.count' do
|
||||
assert_no_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Another_page',
|
||||
|
@ -429,10 +442,11 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
end
|
||||
|
||||
def test_update_page_with_attachments_only_should_not_create_content_version
|
||||
set_tmp_attachments_directory
|
||||
@request.session[:user_id] = 2
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_no_difference 'WikiContent::Version.count' do
|
||||
assert_no_difference 'WikiContentVersion.count' do
|
||||
assert_difference 'Attachment.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
|
@ -452,6 +466,44 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
assert_equal 1, page.content.version
|
||||
end
|
||||
|
||||
def test_update_with_deleted_attachment_ids
|
||||
@request.session[:user_id] = 2
|
||||
page = WikiPage.find(4)
|
||||
attachment = page.attachments.first
|
||||
assert_difference 'Attachment.count', -1 do
|
||||
put :update, :params => {
|
||||
:project_id => page.wiki.project.id,
|
||||
:id => page.title,
|
||||
:content => {
|
||||
:comments => 'delete file',
|
||||
:text => 'edited'
|
||||
},
|
||||
:wiki_page => {:deleted_attachment_ids => [attachment.id]}
|
||||
}
|
||||
end
|
||||
page.reload
|
||||
refute_includes page.attachments, attachment
|
||||
end
|
||||
|
||||
def test_update_with_deleted_attachment_ids_and_failure_should_preserve_selected_attachments
|
||||
@request.session[:user_id] = 2
|
||||
page = WikiPage.find(4)
|
||||
attachment = page.attachments.first
|
||||
assert_no_difference 'Attachment.count' do
|
||||
put :update, :params => {
|
||||
:project_id => page.wiki.project.id,
|
||||
:id => page.title,
|
||||
:content => {
|
||||
:comments => 'a' * 1300, # failure here, comment is too long
|
||||
:text => 'edited'
|
||||
},
|
||||
:wiki_page => {:deleted_attachment_ids => [attachment.id]}
|
||||
}
|
||||
end
|
||||
page.reload
|
||||
assert_includes page.attachments, attachment
|
||||
end
|
||||
|
||||
def test_update_stale_page_should_not_raise_an_error
|
||||
@request.session[:user_id] = 2
|
||||
c = Wiki.find(1).find_page('Another_page').content
|
||||
|
@ -461,7 +513,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_no_difference 'WikiContent::Version.count' do
|
||||
assert_no_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Another_page',
|
||||
|
@ -509,7 +561,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_difference 'WikiContent::Version.count' do
|
||||
assert_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Page_with_sections',
|
||||
|
@ -535,7 +587,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_difference 'WikiContent::Version.count' do
|
||||
assert_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Page_with_sections',
|
||||
|
@ -560,7 +612,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_no_difference 'WikiContent::Version.count' do
|
||||
assert_no_difference 'WikiContentVersion.count' do
|
||||
put :update, :params => {
|
||||
:project_id => 1,
|
||||
:id => 'Page_with_sections',
|
||||
|
@ -647,7 +699,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
def test_diff
|
||||
content = WikiPage.find(1).content
|
||||
assert_difference 'WikiContent::Version.count', 2 do
|
||||
assert_difference 'WikiContentVersion.count', 2 do
|
||||
content.text = "Line removed\nThis is a sample text for testing diffs"
|
||||
content.save!
|
||||
content.text = "This is a sample text for testing diffs\nLine added"
|
||||
|
@ -695,11 +747,10 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
assert_select 'td', :text => /h1\. CookBook documentation v2/
|
||||
end
|
||||
|
||||
# Line 4
|
||||
assert_select 'table.annotate tr:nth-child(4)' do
|
||||
assert_select 'th.line-num', :text => '4'
|
||||
# Line 2
|
||||
assert_select 'table.annotate tr:nth-child(2)' do
|
||||
assert_select 'th.line-num', :text => '2'
|
||||
assert_select 'td.author', :text => /John Smith/
|
||||
assert_select 'td', :text => /Line from v1/
|
||||
end
|
||||
|
||||
# Line 5
|
||||
|
@ -838,6 +889,25 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
assert_equal project.wiki.id, page.wiki_id
|
||||
end
|
||||
|
||||
def test_rename_as_start_page
|
||||
@request.session[:user_id] = 2
|
||||
|
||||
post :rename, :params => {
|
||||
:project_id => 'ecookbook',
|
||||
:id => 'Another_page',
|
||||
:wiki_page => {
|
||||
:wiki_id => '1',
|
||||
:title => 'Another_page',
|
||||
:redirect_existing_links => '1',
|
||||
:is_start_page => '1'
|
||||
}
|
||||
}
|
||||
assert_redirected_to '/projects/ecookbook/wiki/Another_page'
|
||||
|
||||
wiki = Wiki.find(1)
|
||||
assert_equal 'Another_page', wiki.start_page
|
||||
end
|
||||
|
||||
def test_destroy_a_page_without_children_should_not_ask_confirmation
|
||||
@request.session[:user_id] = 2
|
||||
delete :destroy, :params => {:project_id => 1, :id => 'Child_2'}
|
||||
|
@ -888,7 +958,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
def test_destroy_version
|
||||
@request.session[:user_id] = 2
|
||||
assert_difference 'WikiContent::Version.count', -1 do
|
||||
assert_difference 'WikiContentVersion.count', -1 do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
delete :destroy_version, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => 2}
|
||||
|
@ -900,7 +970,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
def test_destroy_invalid_version_should_respond_with_404
|
||||
@request.session[:user_id] = 2
|
||||
assert_no_difference 'WikiContent::Version.count' do
|
||||
assert_no_difference 'WikiContentVersion.count' do
|
||||
assert_no_difference 'WikiContent.count' do
|
||||
assert_no_difference 'WikiPage.count' do
|
||||
delete :destroy_version, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => 99}
|
||||
|
@ -1016,7 +1086,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_equal 'application/pdf', @response.content_type
|
||||
assert_equal 'attachment; filename="CookBook_documentation.pdf"',
|
||||
@response.headers['Content-Disposition']
|
||||
@response.headers['Content-Disposition']
|
||||
end
|
||||
|
||||
def test_show_html
|
||||
|
@ -1026,7 +1096,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_equal 'text/html', @response.content_type
|
||||
assert_equal 'attachment; filename="CookBook_documentation.html"',
|
||||
@response.headers['Content-Disposition']
|
||||
@response.headers['Content-Disposition']
|
||||
assert_select 'h1', :text => /CookBook documentation/
|
||||
end
|
||||
|
||||
|
@ -1037,7 +1107,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_equal 'text/html', @response.content_type
|
||||
assert_equal 'attachment; filename="CookBook_documentation.html"',
|
||||
@response.headers['Content-Disposition']
|
||||
@response.headers['Content-Disposition']
|
||||
assert_select 'h1', :text => /CookBook documentation v2/
|
||||
end
|
||||
|
||||
|
@ -1048,7 +1118,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_equal 'text/plain', @response.content_type
|
||||
assert_equal 'attachment; filename="CookBook_documentation.txt"',
|
||||
@response.headers['Content-Disposition']
|
||||
@response.headers['Content-Disposition']
|
||||
assert_include 'h1. CookBook documentation', @response.body
|
||||
end
|
||||
|
||||
|
@ -1059,7 +1129,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
|
||||
assert_equal 'text/plain', @response.content_type
|
||||
assert_equal 'attachment; filename="CookBook_documentation.txt"',
|
||||
@response.headers['Content-Disposition']
|
||||
@response.headers['Content-Disposition']
|
||||
assert_include 'h1. CookBook documentation v2', @response.body
|
||||
end
|
||||
|
||||
|
@ -1069,17 +1139,17 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
%w|pdf html txt|.each do |format|
|
||||
# Non-MS browsers
|
||||
@request.user_agent = ""
|
||||
get :show, :project_id => 1, :id => title, :format => format
|
||||
get :show, :params => {:project_id => 1, :id => title, :format => format}
|
||||
assert_response :success
|
||||
assert_equal "attachment; filename=\"#{title}.#{format}\"",
|
||||
@response.headers['Content-Disposition']
|
||||
@response.headers['Content-Disposition']
|
||||
# Microsoft's browsers: filename should be URI encoded
|
||||
@request.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'
|
||||
get :show, :project_id => 1, :id => title, :format => format
|
||||
get :show, :params => {:project_id => 1, :id => title, :format => format}
|
||||
assert_response :success
|
||||
filename = URI.encode("#{title}.#{format}")
|
||||
assert_equal "attachment; filename=\"#{filename}\"",
|
||||
@response.headers['Content-Disposition']
|
||||
@response.headers['Content-Disposition']
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1109,6 +1179,7 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
end
|
||||
|
||||
def test_add_attachment
|
||||
set_tmp_attachments_directory
|
||||
@request.session[:user_id] = 2
|
||||
assert_difference 'Attachment.count' do
|
||||
post :add_attachment, :params => {
|
||||
|
@ -1122,4 +1193,17 @@ class WikiControllerTest < Redmine::ControllerTest
|
|||
attachment = Attachment.order('id DESC').first
|
||||
assert_equal Wiki.find(1).find_page('CookBook_documentation'), attachment.container
|
||||
end
|
||||
|
||||
def test_old_version_should_have_robot_exclusion_tag
|
||||
@request.session[:user_id] = 2
|
||||
# Discourage search engines from indexing old versions
|
||||
get :show, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => '2'}
|
||||
assert_response :success
|
||||
assert_select 'head>meta[name="robots"][content=?]', 'noindex,follow,noarchive'
|
||||
|
||||
# No robots meta tag in the current version
|
||||
get :show, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation'}
|
||||
assert_response :success
|
||||
assert_select 'head>meta[name="robots"]', false
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue