diff options
Diffstat (limited to 'test/functional/projects_controller_test.rb')
-rw-r--r-- | test/functional/projects_controller_test.rb | 451 |
1 files changed, 323 insertions, 128 deletions
diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 92d5f4a56..be79f5e60 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -46,14 +46,20 @@ class ProjectsControllerTest < Redmine::ControllerTest end def test_index_atom - get :index, :format => 'atom' + get :index, :params => { + :format => 'atom' + } assert_response :success assert_select 'feed>title', :text => 'Redmine: Latest projects' assert_select 'feed>entry', :count => Project.visible(User.current).count end def test_autocomplete_js - xhr :get, :autocomplete, :format => 'js', :q => 'coo' + get :autocomplete, :params => { + :format => 'js', + :q => 'coo' + }, + :xhr => true assert_response :success assert_equal 'text/javascript', response.content_type end @@ -106,7 +112,9 @@ class ProjectsControllerTest < Redmine::ControllerTest Role.find(1).add_permission! :add_subprojects @request.session[:user_id] = 2 - get :new, :parent_id => 'ecookbook' + get :new, :params => { + :parent_id => 'ecookbook' + } assert_response :success assert_select 'select[name=?]', 'project[parent_id]' do @@ -145,18 +153,21 @@ class ProjectsControllerTest < Redmine::ControllerTest test "#create by admin user should create a new project" do @request.session[:user_id] = 1 - post :create, - :project => { - :name => "blog", - :description => "weblog", - :homepage => 'http://weblog', - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' }, - :tracker_ids => ['1', '3'], - # an issue custom field that is not for all project - :issue_custom_field_ids => ['9'], - :enabled_module_names => ['issue_tracking', 'news', 'repository'] + post :create, :params => { + :project => { + :name => "blog", + :description => "weblog", + :homepage => 'http://weblog', + :identifier => "blog", + :is_public => 1, + :custom_field_values => { + '3' => 'Beta' + }, + :tracker_ids => ['1', '3'], + # an issue custom field that is not for all project + :issue_custom_field_ids => ['9'], + :enabled_module_names => ['issue_tracking', 'news', 'repository'] + } } assert_redirected_to '/projects/blog/settings' @@ -177,13 +188,19 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 1 assert_difference 'Project.count' do - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' }, - :parent_id => 1 - } + post :create, :params => { + :project => { + :name => "blog", + :description => "weblog", + :identifier => "blog", + :is_public => 1, + :custom_field_values => { + '3' => 'Beta' + }, + :parent_id => 1 + + } + } assert_redirected_to '/projects/blog/settings' end @@ -196,7 +213,13 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 1 assert_difference 'Project.count' do - post :create, :project => {:name => "blog", :identifier => "blog"}, :continue => 'Create and continue' + post :create, :params => { + :project => { + :name => "blog", + :identifier => "blog" + }, + :continue => 'Create and continue' + } end assert_redirected_to '/projects/new' end @@ -205,14 +228,20 @@ class ProjectsControllerTest < Redmine::ControllerTest Role.non_member.add_permission! :add_project @request.session[:user_id] = 9 - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' }, - :tracker_ids => ['1', '3'], - :enabled_module_names => ['issue_tracking', 'news', 'repository'] - } + post :create, :params => { + :project => { + :name => "blog", + :description => "weblog", + :identifier => "blog", + :is_public => 1, + :custom_field_values => { + '3' => 'Beta' + }, + :tracker_ids => ['1', '3'], + :enabled_module_names => ['issue_tracking', 'news', 'repository'] + + } + } assert_redirected_to '/projects/blog/settings' @@ -234,13 +263,19 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 9 assert_no_difference 'Project.count' do - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' }, - :parent_id => 1 - } + post :create, :params => { + :project => { + :name => "blog", + :description => "weblog", + :identifier => "blog", + :is_public => 1, + :custom_field_values => { + '3' => 'Beta' + }, + :parent_id => 1 + + } + } end assert_response :success assert_select_error /Subproject of is invalid/ @@ -251,13 +286,19 @@ class ProjectsControllerTest < Redmine::ControllerTest Role.find(1).add_permission! :add_subprojects @request.session[:user_id] = 2 - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' }, - :parent_id => 1 - } + post :create, :params => { + :project => { + :name => "blog", + :description => "weblog", + :identifier => "blog", + :is_public => 1, + :custom_field_values => { + '3' => 'Beta' + }, + :parent_id => 1 + + } + } assert_redirected_to '/projects/blog/settings' project = Project.find_by_name('blog') assert_equal 1, project.parent_id @@ -269,12 +310,18 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 2 assert_no_difference 'Project.count' do - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' } - } + post :create, :params => { + :project => { + :name => "blog", + :description => "weblog", + :identifier => "blog", + :is_public => 1, + :custom_field_values => { + '3' => 'Beta' + } + + } + } end assert_response :success assert_select_error /Subproject of is invalid/ @@ -287,13 +334,19 @@ class ProjectsControllerTest < Redmine::ControllerTest assert !User.find(2).member_of?(Project.find(6)) assert_no_difference 'Project.count' do - post :create, :project => { :name => "blog", - :description => "weblog", - :identifier => "blog", - :is_public => 1, - :custom_field_values => { '3' => 'Beta' }, - :parent_id => 6 - } + post :create, :params => { + :project => { + :name => "blog", + :description => "weblog", + :identifier => "blog", + :is_public => 1, + :custom_field_values => { + '3' => 'Beta' + }, + :parent_id => 6 + + } + } end assert_response :success assert_select_error /Subproject of is invalid/ @@ -307,20 +360,26 @@ class ProjectsControllerTest < Redmine::ControllerTest with_settings :new_project_user_role_id => default_role.id.to_s, :default_projects_modules => %w(news files) do project = new_record(Project) do - post :create, :project => { - :name => "blog1", - :identifier => "blog1", - :enabled_module_names => ["issue_tracking", "repository"] + post :create, :params => { + :project => { + :name => "blog1", + :identifier => "blog1", + :enabled_module_names => ["issue_tracking", "repository"] + + } } end assert_equal %w(files news), project.enabled_module_names.sort default_role.add_permission!(:select_project_modules) project = new_record(Project) do - post :create, :project => { - :name => "blog2", - :identifier => "blog2", - :enabled_module_names => ["issue_tracking", "repository"] + post :create, :params => { + :project => { + :name => "blog2", + :identifier => "blog2", + :enabled_module_names => ["issue_tracking", "repository"] + + } } end assert_equal %w(issue_tracking repository), project.enabled_module_names.sort @@ -333,9 +392,15 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 2 assert_difference 'Project.count' do - post :create, :project => { - :name => 'inherited', :identifier => 'inherited', :parent_id => parent.id, :inherit_members => '1' - } + post :create, :params => { + :project => { + :name => 'inherited', + :identifier => 'inherited', + :parent_id => parent.id, + :inherit_members => '1' + + } + } assert_response 302 end @@ -350,11 +415,14 @@ class ProjectsControllerTest < Redmine::ControllerTest with_settings :default_projects_modules => ['issue_tracking', 'repository'] do @request.session[:user_id] = 1 assert_no_difference 'Project.count' do - post :create, :project => { - :name => "blog", - :identifier => "", - :enabled_module_names => %w(issue_tracking news) - } + post :create, :params => { + :project => { + :name => "blog", + :identifier => "", + :enabled_module_names => %w(issue_tracking news) + + } + } end assert_response :success %w(issue_tracking news).each do |mod| @@ -365,13 +433,17 @@ class ProjectsControllerTest < Redmine::ControllerTest end def test_show_by_id - get :show, :id => 1 + get :show, :params => { + :id => 1 + } assert_response :success assert_select '#header h1', :text => "eCookbook" end def test_show_by_identifier - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response :success assert_select '#header h1', :text => "eCookbook" end @@ -381,14 +453,18 @@ class ProjectsControllerTest < Redmine::ControllerTest p.enabled_module_names = [] p.save! - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response :success assert_select '#main.nosidebar' end def test_show_should_display_visible_custom_fields ProjectCustomField.find_by_name('Development status').update_attribute :visible, true - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response :success assert_select 'li', :text => /Development status/ @@ -396,7 +472,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_show_should_not_display_hidden_custom_fields ProjectCustomField.find_by_name('Development status').update_attribute :visible, false - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response :success assert_select 'li', :text => /Development status/, :count => 0 @@ -407,7 +485,9 @@ class ProjectsControllerTest < Redmine::ControllerTest f2 = ProjectCustomField.generate! :field_format => 'list', :possible_values => %w(Baz Qux), :multiple => true project = Project.generate!(:custom_field_values => {f2.id.to_s => %w(Qux)}) - get :show, :id => project.id + get :show, :params => { + :id => project.id + } assert_response :success assert_select 'li', :text => /#{f1.name}/, :count => 0 @@ -417,7 +497,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_show_should_not_display_blank_text_custom_fields f1 = ProjectCustomField.generate! :field_format => 'text' - get :show, :id => 1 + get :show, :params => { + :id => 1 + } assert_response :success assert_select 'li', :text => /#{f1.name}/, :count => 0 @@ -426,7 +508,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_show_should_not_fail_when_custom_values_are_nil project = Project.find_by_identifier('ecookbook') project.custom_values.first.update_attribute(:value, nil) - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response :success end @@ -434,28 +518,36 @@ class ProjectsControllerTest < Redmine::ControllerTest project = Project.find_by_identifier('ecookbook') project.archive! - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response 403 assert_select 'p', :text => /archived/ assert_not_include project.name, response.body end def test_show_should_not_show_private_subprojects_that_are_not_visible - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response :success assert_select 'a', :text => /Private child/, :count => 0 end def test_show_should_show_private_subprojects_that_are_visible @request.session[:user_id] = 2 # manager who is a member of the private subproject - get :show, :id => 'ecookbook' + get :show, :params => { + :id => 'ecookbook' + } assert_response :success assert_select 'a', :text => /Private child/ end def test_settings @request.session[:user_id] = 2 # manager - get :settings, :id => 1 + get :settings, :params => { + :id => 1 + } assert_response :success assert_select 'input[name=?]', 'project[name]' @@ -463,7 +555,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_settings_of_subproject @request.session[:user_id] = 2 - get :settings, :id => 'private-child' + get :settings, :params => { + :id => 'private-child' + } assert_response :success assert_select 'input[type=checkbox][name=?]', 'project[inherit_members]' @@ -473,14 +567,18 @@ class ProjectsControllerTest < Redmine::ControllerTest Project.find(1).close @request.session[:user_id] = 2 # manager - get :settings, :id => 1 + get :settings, :params => { + :id => 1 + } assert_response 403 end def test_settings_should_be_denied_for_anonymous_on_closed_project Project.find(1).close - get :settings, :id => 1 + get :settings, :params => { + :id => 1 + } assert_response 302 end @@ -489,7 +587,9 @@ class ProjectsControllerTest < Redmine::ControllerTest Role.find(1).add_permission! :manage_wiki @request.session[:user_id] = 2 - get :settings, :id => 1 + get :settings, :params => { + :id => 1 + } assert_response :success assert_select 'form[action=?]', '/projects/ecookbook/wiki' do @@ -500,7 +600,11 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_settings_should_accept_version_status_filter @request.session[:user_id] = 2 - get :settings, :id => 'ecookbook', :tab => 'versions', :version_status => 'locked' + get :settings, :params => { + :id => 'ecookbook', + :tab => 'versions', + :version_status => 'locked' + } assert_response :success assert_select 'select[name=version_status]' do @@ -516,7 +620,12 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_settings_should_accept_version_name_filter @request.session[:user_id] = 2 - get :settings, :id => 'ecookbook', :tab => 'versions', :version_status => '', :version_name => '.1' + get :settings, :params => { + :id => 'ecookbook', + :tab => 'versions', + :version_status => '', + :version_name => '.1' + } assert_response :success assert_select 'input[name=version_name][value=?]', '.1' @@ -534,15 +643,23 @@ class ProjectsControllerTest < Redmine::ControllerTest assert user.reload.locked? @request.session[:user_id] = 2 - get :settings, :id => 'ecookbook', :tab => 'members' + get :settings, :params => { + :id => 'ecookbook', + :tab => 'members' + } assert_response :success assert_select "tr#member-#{member.id}" end def test_update @request.session[:user_id] = 2 # manager - post :update, :id => 1, :project => {:name => 'Test changed name', - :issue_custom_field_ids => ['']} + post :update, :params => { + :id => 1, + :project => { + :name => 'Test changed name', + :issue_custom_field_ids => [''] + } + } assert_redirected_to '/projects/ecookbook/settings' project = Project.find(1) assert_equal 'Test changed name', project.name @@ -550,7 +667,12 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_update_with_failure @request.session[:user_id] = 2 # manager - post :update, :id => 1, :project => {:name => ''} + post :update, :params => { + :id => 1, + :project => { + :name => '' + } + } assert_response :success assert_select_error /name cannot be blank/i end @@ -559,7 +681,12 @@ class ProjectsControllerTest < Redmine::ControllerTest Project.find(1).close @request.session[:user_id] = 2 # manager - post :update, :id => 1, :project => {:name => 'Closed'} + post :update, :params => { + :id => 1, + :project => { + :name => 'Closed' + } + } assert_response 403 assert_equal 'eCookbook', Project.find(1).name end @@ -567,7 +694,12 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_update_should_be_denied_for_anonymous_on_closed_project Project.find(1).close - post :update, :id => 1, :project => {:name => 'Closed'} + post :update, :params => { + :id => 1, + :project => { + :name => 'Closed' + } + } assert_response 302 assert_equal 'eCookbook', Project.find(1).name end @@ -578,7 +710,12 @@ class ProjectsControllerTest < Redmine::ControllerTest User.add_to_project(user, child, Role.generate!(:permissions => [:edit_project])) @request.session[:user_id] = user.id - post :update, :id => child.id, :project => {:name => 'Updated'} + post :update, :params => { + :id => child.id, + :project => { + :name => 'Updated' + } + } assert_response 302 assert_match /Successful update/, flash[:notice] end @@ -587,7 +724,10 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 2 Project.find(1).enabled_module_names = ['issue_tracking', 'news'] - post :modules, :id => 1, :enabled_module_names => ['issue_tracking', 'repository', 'documents'] + post :modules, :params => { + :id => 1, + :enabled_module_names => ['issue_tracking', 'repository', 'documents'] + } assert_redirected_to '/projects/ecookbook/settings/modules' assert_equal ['documents', 'issue_tracking', 'repository'], Project.find(1).enabled_module_names.sort end @@ -596,7 +736,9 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 1 # admin assert_no_difference 'Project.count' do - delete :destroy, :id => 2 + delete :destroy, :params => { + :id => 2 + } assert_response :success end assert_select '.warning', :text => /Are you sure you want to delete this project/ @@ -606,7 +748,9 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 1 # admin assert_no_difference 'Project.count' do - delete :destroy, :id => 1 + delete :destroy, :params => { + :id => 1 + } assert_response :success end assert_select 'strong', @@ -619,7 +763,10 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 1 # admin assert_difference 'Project.count', -5 do - delete :destroy, :id => 1, :confirm => 1 + delete :destroy, :params => { + :id => 1, + :confirm => 1 + } assert_redirected_to '/admin/projects' end assert_nil Project.find_by_id(1) @@ -627,7 +774,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_archive @request.session[:user_id] = 1 # admin - post :archive, :id => 1 + post :archive, :params => { + :id => 1 + } assert_redirected_to '/admin/projects' assert !Project.find(1).active? end @@ -635,7 +784,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_archive_with_failure @request.session[:user_id] = 1 Project.any_instance.stubs(:archive).returns(false) - post :archive, :id => 1 + post :archive, :params => { + :id => 1 + } assert_redirected_to '/admin/projects' assert_match /project cannot be archived/i, flash[:error] end @@ -643,14 +794,18 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_unarchive @request.session[:user_id] = 1 # admin Project.find(1).archive - post :unarchive, :id => 1 + post :unarchive, :params => { + :id => 1 + } assert_redirected_to '/admin/projects' assert Project.find(1).active? end def test_close @request.session[:user_id] = 2 - post :close, :id => 1 + post :close, :params => { + :id => 1 + } assert_redirected_to '/projects/ecookbook' assert_equal Project::STATUS_CLOSED, Project.find(1).status end @@ -658,7 +813,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_reopen Project.find(1).close @request.session[:user_id] = 2 - post :reopen, :id => 1 + post :reopen, :params => { + :id => 1 + } assert_redirected_to '/projects/ecookbook' assert Project.find(1).active? end @@ -668,7 +825,9 @@ class ProjectsControllerTest < Redmine::ControllerTest parent = nil 6.times do |i| p = Project.generate_with_parent!(parent) - get :show, :id => p + get :show, :params => { + :id => p + } assert_select '#header h1' do assert_select 'a', :count => [i, 3].min end @@ -681,7 +840,9 @@ class ProjectsControllerTest < Redmine::ControllerTest @request.session[:user_id] = 1 # admin orig = Project.find(1) - get :copy, :id => orig.id + get :copy, :params => { + :id => orig.id + } assert_response :success assert_select 'textarea[name=?]', 'project[description]', :text => orig.description @@ -690,7 +851,9 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_get_copy_with_invalid_source_should_respond_with_404 @request.session[:user_id] = 1 - get :copy, :id => 99 + get :copy, :params => { + :id => 99 + } assert_response 404 end @@ -700,7 +863,9 @@ class ProjectsControllerTest < Redmine::ControllerTest source = Project.generate!(:issue_custom_fields => [field1]) @request.session[:user_id] = 1 - get :copy, :id => source.id + get :copy, :params => { + :id => source.id + } assert_response :success assert_select 'fieldset#project_issue_custom_fields' do assert_select 'input[type=checkbox][value=?][checked=checked]', field1.id.to_s @@ -713,14 +878,17 @@ class ProjectsControllerTest < Redmine::ControllerTest CustomField.delete_all assert_difference 'Project.count' do - post :copy, :id => 1, - :project => { - :name => 'Copy', - :identifier => 'unique-copy', - :tracker_ids => ['1', '2', '3', ''], - :enabled_module_names => %w(issue_tracking time_tracking) - }, - :only => %w(issues versions) + post :copy, :params => { + :id => 1, + :project => { + :name => 'Copy', + :identifier => 'unique-copy', + :tracker_ids => ['1', '2', '3', ''], + :enabled_module_names => %w(issue_tracking time_tracking) + + }, + :only => %w(issues versions) + } end project = Project.find('unique-copy') source = Project.find(1) @@ -733,45 +901,72 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_post_copy_should_redirect_to_settings_when_successful @request.session[:user_id] = 1 # admin - post :copy, :id => 1, :project => {:name => 'Copy', :identifier => 'unique-copy'} + post :copy, :params => { + :id => 1, + :project => { + :name => 'Copy', + :identifier => 'unique-copy' + } + } assert_response :redirect assert_redirected_to :controller => 'projects', :action => 'settings', :id => 'unique-copy' end def test_post_copy_with_failure @request.session[:user_id] = 1 - post :copy, :id => 1, :project => {:name => 'Copy', :identifier => ''} + post :copy, :params => { + :id => 1, + :project => { + :name => 'Copy', + :identifier => '' + } + } assert_response :success assert_select_error /Identifier cannot be blank/ end def test_jump_without_project_id_should_redirect_to_active_tab - get :index, :jump => 'issues' + get :index, :params => { + :jump => 'issues' + } assert_redirected_to '/issues' end def test_jump_should_not_redirect_to_unknown_tab - get :index, :jump => 'foobar' + get :index, :params => { + :jump => 'foobar' + } assert_response :success end def test_jump_should_redirect_to_active_tab - get :show, :id => 1, :jump => 'issues' + get :show, :params => { + :id => 1, + :jump => 'issues' + } assert_redirected_to '/projects/ecookbook/issues' end def test_jump_should_not_redirect_to_inactive_tab - get :show, :id => 3, :jump => 'documents' + get :show, :params => { + :id => 3, + :jump => 'documents' + } assert_response :success end def test_jump_should_not_redirect_to_unknown_tab - get :show, :id => 3, :jump => 'foobar' + get :show, :params => { + :id => 3, + :jump => 'foobar' + } assert_response :success end def test_body_should_have_project_css_class - get :show, :id => 1 + get :show, :params => { + :id => 1 + } assert_select 'body.project-ecookbook' end end |