Mercurial > hg > soundsoftware-site
diff test/functional/boards_controller_test.rb @ 1115:433d4f72a19b redmine-2.2
Update to Redmine SVN revision 11137 on 2.2-stable branch
author | Chris Cannam |
---|---|
date | Mon, 07 Jan 2013 12:01:42 +0000 |
parents | 5f33065ddc4b |
children | 3e4c3460b6ca |
line wrap: on
line diff
--- a/test/functional/boards_controller_test.rb Wed Jun 27 14:54:18 2012 +0100 +++ b/test/functional/boards_controller_test.rb Mon Jan 07 12:01:42 2013 +0000 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2011 Jean-Philippe Lang +# Copyright (C) 2006-2012 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 @@ -16,18 +16,11 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require File.expand_path('../../test_helper', __FILE__) -require 'boards_controller' - -# Re-raise errors caught by the controller. -class BoardsController; def rescue_action(e) raise e end; end class BoardsControllerTest < ActionController::TestCase fixtures :projects, :users, :members, :member_roles, :roles, :boards, :messages, :enabled_modules def setup - @controller = BoardsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new User.current = nil end @@ -53,14 +46,6 @@ assert_not_nil assigns(:topics) end - def test_post_new - @request.session[:user_id] = 2 - assert_difference 'Board.count' do - post :new, :project_id => 1, :board => { :name => 'Testing', :description => 'Testing board creation'} - end - assert_redirected_to '/projects/ecookbook/settings/boards' - end - def test_show get :show, :project_id => 1, :id => 1 assert_response :success @@ -70,19 +55,121 @@ assert_not_nil assigns(:topics) end + def test_show_should_display_sticky_messages_first + Message.update_all(:sticky => 0) + Message.update_all({:sticky => 1}, {:id => 1}) + + get :show, :project_id => 1, :id => 1 + assert_response :success + + topics = assigns(:topics) + assert_not_nil topics + assert topics.size > 1, "topics size was #{topics.size}" + assert topics.first.sticky? + assert topics.first.updated_on < topics.second.updated_on + end + + def test_show_with_permission_should_display_the_new_message_form + @request.session[:user_id] = 2 + get :show, :project_id => 1, :id => 1 + assert_response :success + assert_template 'show' + + assert_tag 'form', :attributes => {:id => 'message-form'} + assert_tag 'input', :attributes => {:name => 'message[subject]'} + end + def test_show_atom get :show, :project_id => 1, :id => 1, :format => 'atom' assert_response :success - assert_template 'common/feed.atom' + assert_template 'common/feed' assert_not_nil assigns(:board) assert_not_nil assigns(:project) assert_not_nil assigns(:messages) end - def test_post_edit + def test_show_not_found + get :index, :project_id => 1, :id => 97 + assert_response 404 + end + + def test_new + @request.session[:user_id] = 2 + get :new, :project_id => 1 + assert_response :success + assert_template 'new' + + assert_select 'select[name=?]', 'board[parent_id]' do + assert_select 'option', (Project.find(1).boards.size + 1) + assert_select 'option[value=]', :text => '' + assert_select 'option[value=1]', :text => 'Help' + end + end + + def test_new_without_project_boards + Project.find(1).boards.delete_all + @request.session[:user_id] = 2 + + get :new, :project_id => 1 + assert_response :success + assert_template 'new' + + assert_select 'select[name=?]', 'board[parent_id]', 0 + end + + def test_create + @request.session[:user_id] = 2 + assert_difference 'Board.count' do + post :create, :project_id => 1, :board => { :name => 'Testing', :description => 'Testing board creation'} + end + assert_redirected_to '/projects/ecookbook/settings/boards' + board = Board.first(:order => 'id DESC') + assert_equal 'Testing', board.name + assert_equal 'Testing board creation', board.description + end + + def test_create_with_parent + @request.session[:user_id] = 2 + assert_difference 'Board.count' do + post :create, :project_id => 1, :board => { :name => 'Testing', :description => 'Testing', :parent_id => 2} + end + assert_redirected_to '/projects/ecookbook/settings/boards' + board = Board.first(:order => 'id DESC') + assert_equal Board.find(2), board.parent + end + + def test_create_with_failure @request.session[:user_id] = 2 assert_no_difference 'Board.count' do - post :edit, :project_id => 1, :id => 2, :board => { :name => 'Testing', :description => 'Testing board update'} + post :create, :project_id => 1, :board => { :name => '', :description => 'Testing board creation'} + end + assert_response :success + assert_template 'new' + end + + def test_edit + @request.session[:user_id] = 2 + get :edit, :project_id => 1, :id => 2 + assert_response :success + assert_template 'edit' + end + + def test_edit_with_parent + board = Board.generate!(:project_id => 1, :parent_id => 2) + @request.session[:user_id] = 2 + get :edit, :project_id => 1, :id => board.id + assert_response :success + assert_template 'edit' + + assert_select 'select[name=?]', 'board[parent_id]' do + assert_select 'option[value=2][selected=selected]' + end + end + + def test_update + @request.session[:user_id] = 2 + assert_no_difference 'Board.count' do + put :update, :project_id => 1, :id => 2, :board => { :name => 'Testing', :description => 'Testing board update'} end assert_redirected_to '/projects/ecookbook/settings/boards' assert_equal 'Testing', Board.find(2).name @@ -90,16 +177,23 @@ def test_update_position @request.session[:user_id] = 2 - post :edit, :project_id => 1, :id => 2, :board => { :move_to => 'highest'} + put :update, :project_id => 1, :id => 2, :board => { :move_to => 'highest'} assert_redirected_to '/projects/ecookbook/settings/boards' board = Board.find(2) assert_equal 1, board.position end - def test_post_destroy + def test_update_with_failure + @request.session[:user_id] = 2 + put :update, :project_id => 1, :id => 2, :board => { :name => '', :description => 'Testing board update'} + assert_response :success + assert_template 'edit' + end + + def test_destroy @request.session[:user_id] = 2 assert_difference 'Board.count', -1 do - post :destroy, :project_id => 1, :id => 2 + delete :destroy, :project_id => 1, :id => 2 end assert_redirected_to '/projects/ecookbook/settings/boards' assert_nil Board.find_by_id(2)