##// END OF EJS Templates
Upgraded to Rails 2.3.4 (#3597)...
Upgraded to Rails 2.3.4 (#3597) * Ran the Rails upgrade * Upgraded to Rails Engines 2.3.2 * Added a plugin to let Engines override application views. * Converted tests to use the new classes: ** ActionController::TestCase for functional ** ActiveSupport::TestCase for units * Converted ActiveRecord::Error message to a string. * ActiveRecord grouping returns an ordered hash which doesn't have #sort! * Updated the I18n storage_units format. * Added some default initializers from a fresh rails app * Changed the order of check_box_tags and hidden_field_tags. The hidden tag needs to appear first in Rails 2.3, otherwise it will override any value in the check_box_tag. * Removed the custom handler for when the cookie store is tampered with. Rails 2.3 removed the TamperedWithCookie exception and instead Rails will not load the data from it when it's been tampered with (e.g. no user login). * Fixed mail layouts, 2.3 has problems with implicit multipart emails that use layouts. Also removed some custom Redmine mailer code. * Fixed a bug that occurred in tests where the "required" span tag would be added to the :field_status translation. This resulted in an email string of: <li>Status<span class="required"> *</span><span class="required"> *</span> Instead of: <li>Status: New</li> git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2887 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r2773:7b0cb6aba871
r2773:7b0cb6aba871
Show More
wiki_controller_test.rb
397 lines | 15.3 KiB | text/x-ruby | RubyLexer
/ test / functional / wiki_controller_test.rb
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 # redMine - project management software
# Copyright (C) 2006-2007 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'
require 'wiki_controller'
# Re-raise errors caught by the controller.
class WikiController; def rescue_action(e) raise e end; end
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class WikiControllerTest < ActionController::TestCase
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :attachments
Jean-Philippe Lang
Added some functional tests (wiki)....
r986
def setup
@controller = WikiController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_index_routing
assert_routing(
{:method => :get, :path => '/projects/567/wiki'},
:controller => 'wiki', :action => 'index', :id => '567'
)
assert_routing(
{:method => :get, :path => '/projects/567/wiki/lalala'},
:controller => 'wiki', :action => 'index', :id => '567', :page => 'lalala'
)
assert_generates(
'/projects/567/wiki',
:controller => 'wiki', :action => 'index', :id => '567', :page => nil
)
end
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 def test_show_start_page
Jean-Philippe Lang
Adds child_pages macro for wiki pages (#528)....
r1690 get :index, :id => 'ecookbook'
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 assert_response :success
assert_template 'show'
assert_tag :tag => 'h1', :content => /CookBook documentation/
Jean-Philippe Lang
Adds child_pages macro for wiki pages (#528)....
r1690
# child_pages macro
assert_tag :ul, :attributes => { :class => 'pages-hierarchy' },
:child => { :tag => 'li',
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/Page_with_an_inline_image' },
Jean-Philippe Lang
Adds child_pages macro for wiki pages (#528)....
r1690 :content => 'Page with an inline image' } }
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 end
def test_show_page_with_name
get :index, :id => 1, :page => 'Another_page'
assert_response :success
assert_template 'show'
assert_tag :tag => 'h1', :content => /Another page/
Jean-Philippe Lang
Fixed: inline image not displayed when including a wiki page (closes #1001)....
r1312 # Included page with an inline image
assert_tag :tag => 'p', :content => /This is an inline image/
Jean-Philippe Lang
Inline images alt attribute set to the attachment description....
r1313 assert_tag :tag => 'img', :attributes => { :src => '/attachments/download/3',
:alt => 'This is a logo' }
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 end
def test_show_unexistent_page_without_edit_right
get :index, :id => 1, :page => 'Unexistent page'
assert_response 404
end
def test_show_unexistent_page_with_edit_right
@request.session[:user_id] = 2
get :index, :id => 1, :page => 'Unexistent page'
assert_response :success
assert_template 'edit'
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_edit_routing
assert_routing(
{:method => :get, :path => '/projects/567/wiki/my_page/edit'},
:controller => 'wiki', :action => 'edit', :id => '567', :page => 'my_page'
)
assert_recognizes(#TODO: use PUT to page path, adjust forms accordingly
{:controller => 'wiki', :action => 'edit', :id => '567', :page => 'my_page'},
{:method => :post, :path => '/projects/567/wiki/my_page/edit'}
)
end
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 def test_create_page
@request.session[:user_id] = 2
post :edit, :id => 1,
:page => 'New page',
:content => {:comments => 'Created the page',
:text => "h1. New page\n\nThis is a new page",
:version => 0}
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'New_page'
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 page = Project.find(1).wiki.find_page('New page')
assert !page.new_record?
assert_not_nil page.content
assert_equal 'Created the page', page.content.comments
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_preview_routing
assert_routing(
{:method => :post, :path => '/projects/567/wiki/CookBook_documentation/preview'},
:controller => 'wiki', :action => 'preview', :id => '567', :page => 'CookBook_documentation'
)
end
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 def test_preview
@request.session[:user_id] = 2
xhr :post, :preview, :id => 1, :page => 'CookBook_documentation',
:content => { :comments => '',
:text => 'this is a *previewed text*',
:version => 3 }
assert_response :success
assert_template 'common/_preview'
assert_tag :tag => 'strong', :content => /previewed text/
end
Jean-Philippe Lang
Fixed: error when previewing a new wiki page (#1292) introduced in r1415....
r1431 def test_preview_new_page
@request.session[:user_id] = 2
xhr :post, :preview, :id => 1, :page => 'New page',
:content => { :text => 'h1. New page',
:comments => '',
:version => 0 }
assert_response :success
assert_template 'common/_preview'
assert_tag :tag => 'h1', :content => /New page/
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_history_routing
assert_routing(
{:method => :get, :path => '/projects/1/wiki/CookBook_documentation/history'},
:controller => 'wiki', :action => 'history', :id => '1', :page => 'CookBook_documentation'
)
end
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 def test_history
get :history, :id => 1, :page => 'CookBook_documentation'
assert_response :success
assert_template 'history'
assert_not_nil assigns(:versions)
assert_equal 3, assigns(:versions).size
Eric Davis
Hiding the View Differences button when a wiki page's history only has one version....
r1748 assert_select "input[type=submit][name=commit]"
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 end
Eric Davis
Hiding the View Differences button when a wiki page's history only has one version....
r1748
def test_history_with_one_version
get :history, :id => 1, :page => 'Another_page'
assert_response :success
assert_template 'history'
assert_not_nil assigns(:versions)
assert_equal 1, assigns(:versions).size
assert_select "input[type=submit][name=commit]", false
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315
def test_diff_routing
assert_routing(
{:method => :get, :path => '/projects/1/wiki/CookBook_documentation/diff/2/vs/1'},
:controller => 'wiki', :action => 'diff', :id => '1', :page => 'CookBook_documentation', :version => '2', :version_from => '1'
)
end
Eric Davis
Hiding the View Differences button when a wiki page's history only has one version....
r1748
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 def test_diff
get :diff, :id => 1, :page => 'CookBook_documentation', :version => 2, :version_from => 1
assert_response :success
assert_template 'diff'
assert_tag :tag => 'span', :attributes => { :class => 'diff_in'},
:content => /updated/
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_annotate_routing
assert_routing(
{:method => :get, :path => '/projects/1/wiki/CookBook_documentation/annotate/2'},
:controller => 'wiki', :action => 'annotate', :id => '1', :page => 'CookBook_documentation', :version => '2'
)
end
Jean-Philippe Lang
Added wiki annotate view. It's accessible for each version from the page history view. ...
r1007 def test_annotate
get :annotate, :id => 1, :page => 'CookBook_documentation', :version => 2
assert_response :success
assert_template 'annotate'
# Line 1
assert_tag :tag => 'tr', :child => { :tag => 'th', :attributes => {:class => 'line-num'}, :content => '1' },
:child => { :tag => 'td', :attributes => {:class => 'author'}, :content => /John Smith/ },
:child => { :tag => 'td', :content => /h1\. CookBook documentation/ }
# Line 2
assert_tag :tag => 'tr', :child => { :tag => 'th', :attributes => {:class => 'line-num'}, :content => '2' },
:child => { :tag => 'td', :attributes => {:class => 'author'}, :content => /redMine Admin/ },
:child => { :tag => 'td', :content => /Some updated \[\[documentation\]\] here/ }
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_rename_routing
assert_routing(
{:method => :get, :path => '/projects/22/wiki/ladida/rename'},
:controller => 'wiki', :action => 'rename', :id => '22', :page => 'ladida'
)
assert_recognizes(
#TODO: should be moved into a update action and use a PUT to the page URI
{:controller => 'wiki', :action => 'rename', :id => '22', :page => 'ladida'},
{:method => :post, :path => '/projects/22/wiki/ladida/rename'}
)
end
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 def test_rename_with_redirect
@request.session[:user_id] = 2
post :rename, :id => 1, :page => 'Another_page',
:wiki_page => { :title => 'Another renamed page',
:redirect_existing_links => 1 }
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_renamed_page'
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 wiki = Project.find(1).wiki
# Check redirects
assert_not_nil wiki.find_page('Another page')
assert_nil wiki.find_page('Another page', :with_redirect => false)
end
def test_rename_without_redirect
@request.session[:user_id] = 2
post :rename, :id => 1, :page => 'Another_page',
:wiki_page => { :title => 'Another renamed page',
:redirect_existing_links => "0" }
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_renamed_page'
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 wiki = Project.find(1).wiki
# Check that there's no redirects
assert_nil wiki.find_page('Another page')
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_destroy_routing
assert_recognizes(
#TODO: should use DELETE on page URI
{:controller => 'wiki', :action => 'destroy', :id => '22', :page => 'ladida'},
{:method => :post, :path => 'projects/22/wiki/ladida/destroy'}
)
end
Jean-Philippe Lang
Ask user what to do with child pages when deleting a parent wiki page (#3202)....
r2584 def test_destroy_child
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 @request.session[:user_id] = 2
Jean-Philippe Lang
Ask user what to do with child pages when deleting a parent wiki page (#3202)....
r2584 post :destroy, :id => 1, :page => 'Child_1'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'special', :id => 'ecookbook', :page => 'Page_index'
end
Jean-Philippe Lang
Ask user what to do with child pages when deleting a parent wiki page (#3202)....
r2584 def test_destroy_parent
@request.session[:user_id] = 2
assert_no_difference('WikiPage.count') do
post :destroy, :id => 1, :page => 'Another_page'
end
assert_response :success
assert_template 'destroy'
end
def test_destroy_parent_with_nullify
@request.session[:user_id] = 2
assert_difference('WikiPage.count', -1) do
post :destroy, :id => 1, :page => 'Another_page', :todo => 'nullify'
end
assert_redirected_to :action => 'special', :id => 'ecookbook', :page => 'Page_index'
assert_nil WikiPage.find_by_id(2)
end
def test_destroy_parent_with_cascade
@request.session[:user_id] = 2
assert_difference('WikiPage.count', -3) do
post :destroy, :id => 1, :page => 'Another_page', :todo => 'destroy'
end
assert_redirected_to :action => 'special', :id => 'ecookbook', :page => 'Page_index'
assert_nil WikiPage.find_by_id(2)
assert_nil WikiPage.find_by_id(5)
end
def test_destroy_parent_with_reassign
@request.session[:user_id] = 2
assert_difference('WikiPage.count', -1) do
post :destroy, :id => 1, :page => 'Another_page', :todo => 'reassign', :reassign_to_id => 1
end
assert_redirected_to :action => 'special', :id => 'ecookbook', :page => 'Page_index'
assert_nil WikiPage.find_by_id(2)
assert_equal WikiPage.find(1), WikiPage.find_by_id(5).parent
end
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_special_routing
assert_routing(
{:method => :get, :path => '/projects/567/wiki/page_index'},
:controller => 'wiki', :action => 'special', :id => '567', :page => 'page_index'
)
assert_routing(
{:method => :get, :path => '/projects/567/wiki/Page_Index'},
:controller => 'wiki', :action => 'special', :id => '567', :page => 'Page_Index'
)
assert_routing(
{:method => :get, :path => '/projects/567/wiki/date_index'},
:controller => 'wiki', :action => 'special', :id => '567', :page => 'date_index'
)
assert_routing(
{:method => :get, :path => '/projects/567/wiki/export'},
:controller => 'wiki', :action => 'special', :id => '567', :page => 'export'
)
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 end
def test_page_index
Jean-Philippe Lang
Project identifier is now used in URLs (instead of project id)....
r994 get :special, :id => 'ecookbook', :page => 'Page_index'
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 assert_response :success
assert_template 'special_page_index'
pages = assigns(:pages)
assert_not_nil pages
Jean-Philippe Lang
Fixed: inline image not displayed when including a wiki page (closes #1001)....
r1312 assert_equal Project.find(1).wiki.pages.size, pages.size
Jean-Philippe Lang
Wiki page hierarchy (#528). Parent page can be assigned on Rename screen....
r1689
assert_tag :ul, :attributes => { :class => 'pages-hierarchy' },
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/CookBook_documentation' },
Jean-Philippe Lang
Wiki page hierarchy (#528). Parent page can be assigned on Rename screen....
r1689 :content => 'CookBook documentation' },
:child => { :tag => 'ul',
:child => { :tag => 'li',
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/Page_with_an_inline_image' },
Jean-Philippe Lang
Wiki page hierarchy (#528). Parent page can be assigned on Rename screen....
r1689 :content => 'Page with an inline image' } } } },
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/Another_page' },
Jean-Philippe Lang
Wiki page hierarchy (#528). Parent page can be assigned on Rename screen....
r1689 :content => 'Another page' } }
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 end
def test_not_found
get :index, :id => 999
assert_response 404
end
Jean-Philippe Lang
Wiki page protection (#851, patch #1146 by Mateo Murphy with slight changes)....
r1400
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 def test_protect_routing
assert_routing(
{:method => :post, :path => 'projects/22/wiki/ladida/protect'},
{:controller => 'wiki', :action => 'protect', :id => '22', :page => 'ladida'}
)
end
Jean-Philippe Lang
Wiki page protection (#851, patch #1146 by Mateo Murphy with slight changes)....
r1400 def test_protect_page
page = WikiPage.find_by_wiki_id_and_title(1, 'Another_page')
assert !page.protected?
@request.session[:user_id] = 2
post :protect, :id => 1, :page => page.title, :protected => '1'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_page'
Jean-Philippe Lang
Wiki page protection (#851, patch #1146 by Mateo Murphy with slight changes)....
r1400 assert page.reload.protected?
end
def test_unprotect_page
page = WikiPage.find_by_wiki_id_and_title(1, 'CookBook_documentation')
assert page.protected?
@request.session[:user_id] = 2
post :protect, :id => 1, :page => page.title, :protected => '0'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'CookBook_documentation'
Jean-Philippe Lang
Wiki page protection (#851, patch #1146 by Mateo Murphy with slight changes)....
r1400 assert !page.reload.protected?
end
def test_show_page_with_edit_link
@request.session[:user_id] = 2
get :index, :id => 1
assert_response :success
assert_template 'show'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_tag :tag => 'a', :attributes => { :href => '/projects/1/wiki/CookBook_documentation/edit' }
Jean-Philippe Lang
Wiki page protection (#851, patch #1146 by Mateo Murphy with slight changes)....
r1400 end
def test_show_page_without_edit_link
@request.session[:user_id] = 4
get :index, :id => 1
assert_response :success
assert_template 'show'
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert_no_tag :tag => 'a', :attributes => { :href => '/projects/1/wiki/CookBook_documentation/edit' }
Jean-Philippe Lang
Wiki page protection (#851, patch #1146 by Mateo Murphy with slight changes)....
r1400 end
def test_edit_unprotected_page
# Non members can edit unprotected wiki pages
@request.session[:user_id] = 4
get :edit, :id => 1, :page => 'Another_page'
assert_response :success
assert_template 'edit'
end
def test_edit_protected_page_by_nonmember
# Non members can't edit protected wiki pages
@request.session[:user_id] = 4
get :edit, :id => 1, :page => 'CookBook_documentation'
assert_response 403
end
def test_edit_protected_page_by_member
@request.session[:user_id] = 2
get :edit, :id => 1, :page => 'CookBook_documentation'
assert_response :success
assert_template 'edit'
end
Jean-Philippe Lang
Check that wiki page exists before processing (#2360)....
r2143
def test_history_of_non_existing_page_should_return_404
get :history, :id => 1, :page => 'Unknown_page'
assert_response 404
end
Jean-Philippe Lang
Added some functional tests (wiki)....
r986 end