Mercurial > hg > soundsoftware-site
diff test/functional/projects_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 | cbb26bc654de |
children | 622f24f53b42 261b3d9a4903 |
line wrap: on
line diff
--- a/test/functional/projects_controller_test.rb Wed Jun 27 14:54:18 2012 +0100 +++ b/test/functional/projects_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 @@ -55,7 +55,7 @@ def test_index_atom get :index, :format => 'atom' assert_response :success - assert_template 'common/feed.atom' + assert_template 'common/feed' assert_select 'feed>title', :text => 'Redmine: Latest projects' assert_select 'feed>entry', :count => Project.count(:conditions => Project.visible_condition(User.current)) end @@ -311,12 +311,6 @@ end end - def test_create_should_not_accept_get - @request.session[:user_id] = 1 - get :create - assert_response :method_not_allowed - end - def test_show_by_id get :show, :id => 1 assert_response :success @@ -386,6 +380,21 @@ assert_template 'settings' end + def test_settings_should_be_denied_for_member_on_closed_project + Project.find(1).close + @request.session[:user_id] = 2 # manager + + get :settings, :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 + assert_response 302 + end + def test_update @request.session[:user_id] = 2 # manager post :update, :id => 1, :project => {:name => 'Test changed name', @@ -395,6 +404,31 @@ assert_equal 'Test changed name', project.name end + def test_update_with_failure + @request.session[:user_id] = 2 # manager + post :update, :id => 1, :project => {:name => ''} + assert_response :success + assert_template 'settings' + assert_error_tag :content => /name can't be blank/i + end + + def test_update_should_be_denied_for_member_on_closed_project + Project.find(1).close + @request.session[:user_id] = 2 # manager + + post :update, :id => 1, :project => {:name => 'Closed'} + assert_response 403 + assert_equal 'eCookbook', Project.find(1).name + end + + def test_update_should_be_denied_for_anonymous_on_closed_project + Project.find(1).close + + post :update, :id => 1, :project => {:name => 'Closed'} + assert_response 302 + assert_equal 'eCookbook', Project.find(1).name + end + def test_modules @request.session[:user_id] = 2 Project.find(1).enabled_module_names = ['issue_tracking', 'news'] @@ -404,23 +438,21 @@ assert_equal ['documents', 'issue_tracking', 'repository'], Project.find(1).enabled_module_names.sort end - def test_modules_should_not_allow_get - @request.session[:user_id] = 1 - get :modules, :id => 1 - assert_response :method_not_allowed - end - - def test_get_destroy + def test_destroy_without_confirmation @request.session[:user_id] = 1 # admin - get :destroy, :id => 1 + delete :destroy, :id => 1 assert_response :success assert_template 'destroy' assert_not_nil Project.find_by_id(1) + assert_tag :tag => 'strong', + :content => ['Private child of eCookbook', + 'Child of private child, eCookbook Subproject 1', + 'eCookbook Subproject 2'].join(', ') end - def test_post_destroy + def test_destroy @request.session[:user_id] = 1 # admin - post :destroy, :id => 1, :confirm => 1 + delete :destroy, :id => 1, :confirm => 1 assert_redirected_to '/admin/projects' assert_nil Project.find_by_id(1) end @@ -432,6 +464,14 @@ assert !Project.find(1).active? end + def test_archive_with_failure + @request.session[:user_id] = 1 + Project.any_instance.stubs(:archive).returns(false) + post :archive, :id => 1 + assert_redirected_to '/admin/projects' + assert_match /project cannot be archived/i, flash[:error] + end + def test_unarchive @request.session[:user_id] = 1 # admin Project.find(1).archive @@ -440,6 +480,21 @@ assert Project.find(1).active? end + def test_close + @request.session[:user_id] = 2 + post :close, :id => 1 + assert_redirected_to '/projects/ecookbook' + assert_equal Project::STATUS_CLOSED, Project.find(1).status + end + + def test_reopen + Project.find(1).close + @request.session[:user_id] = 2 + post :reopen, :id => 1 + assert_redirected_to '/projects/ecookbook' + assert Project.find(1).active? + end + def test_project_breadcrumbs_should_be_limited_to_3_ancestors CustomField.delete_all parent = nil @@ -468,11 +523,10 @@ :attributes => {:name => 'project[enabled_module_names][]', :value => 'issue_tracking'} end - def test_get_copy_without_project - @request.session[:user_id] = 1 # admin - get :copy - assert_response :redirect - assert_redirected_to :controller => 'admin', :action => 'projects' + def test_get_copy_with_invalid_source_should_respond_with_404 + @request.session[:user_id] = 1 + get :copy, :id => 99 + assert_response 404 end def test_post_copy_should_copy_requested_items @@ -494,9 +548,7 @@ assert_equal %w(issue_tracking time_tracking), project.enabled_module_names.sort assert_equal source.versions.count, project.versions.count, "All versions were not copied" - # issues assigned to a closed version won't be copied - assert_equal source.issues.select {|i| i.fixed_version.nil? || i.fixed_version.open?}.size, - project.issues.count, "All issues were not copied" + assert_equal source.issues.count, project.issues.count, "All issues were not copied" assert_equal 0, project.members.count end @@ -523,23 +575,4 @@ assert_response :success assert_template 'show' end - - # A hook that is manually registered later - class ProjectBasedTemplate < Redmine::Hook::ViewListener - def view_layouts_base_html_head(context) - # Adds a project stylesheet - stylesheet_link_tag(context[:project].identifier) if context[:project] - end - end - # Don't use this hook now - Redmine::Hook.clear_listeners - - def test_hook_response - Redmine::Hook.add_listener(ProjectBasedTemplate) - get :show, :id => 1 - assert_tag :tag => 'link', :attributes => {:href => '/stylesheets/ecookbook.css'}, - :parent => {:tag => 'head'} - - Redmine::Hook.clear_listeners - end end