##// END OF EJS Templates
Speeds up rendering of the project list for users who belong to hundreds of projects....
Speeds up rendering of the project list for users who belong to hundreds of projects. git-svn-id: http://svn.redmine.org/redmine/trunk@16123 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15678:bf5dade8df89
r15741:f8df935dcada
Show More
project_enumerations_controller_test.rb
235 lines | 10.9 KiB | text/x-ruby | RubyLexer
/ test / functional / project_enumerations_controller_test.rb
Jean-Philippe Lang
Functional tests cleanup....
r10709 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Functional tests cleanup....
r10709 #
# 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.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939
Jean-Philippe Lang
Adds our own class for controller tests....
r15279 class ProjectEnumerationsControllerTest < Redmine::ControllerTest
Toshi MARUYAMA
Rails3: replace "all" fixtures at test/functional/project_enumerations_controller_test.rb...
r7405 fixtures :projects, :trackers, :issue_statuses, :issues,
:enumerations, :users, :issue_categories,
:projects_trackers,
:roles,
:member_roles,
:members,
:enabled_modules,
:custom_fields, :custom_fields_projects,
:custom_fields_trackers, :custom_values,
:time_entries
Toshi MARUYAMA
remove trailing white-spaces from test/functional/project_enumerations_controller_test.rb....
r6798
Jean-Philippe Lang
Random test failures in #test_..._if_an_exception_is_raised with ruby1.8.7-p358 and sqlite3....
r8927 self.use_transactional_fixtures = false
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 def setup
@request.session[:user_id] = nil
Setting.default_language = 'en'
end
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 def test_update_to_override_system_activities
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 @request.session[:user_id] = 2 # manager
billable_field = TimeEntryActivityCustomField.find_by_name("Billable")
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 put :update, :project_id => 1, :enumerations => {
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # Design, De-activate
"10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"}, # Development, Change custom value
"14"=>{"parent_id"=>"14", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"}, # Inactive Activity, Activate with custom value
"11"=>{"parent_id"=>"11", "custom_field_values"=>{"7"=>"1"}, "active"=>"1"} # QA, no changes
}
assert_response :redirect
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/projects/ecookbook/settings/activities'
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939
# Created project specific activities...
project = Project.find('ecookbook')
# ... Design
design = project.time_entry_activities.find_by_name("Design")
assert design, "Project activity not found"
assert_equal 9, design.parent_id # Relate to the system activity
assert_not_equal design.parent.id, design.id # Different records
assert_equal design.parent.name, design.name # Same name
assert !design.active?
# ... Development
development = project.time_entry_activities.find_by_name("Development")
assert development, "Project activity not found"
assert_equal 10, development.parent_id # Relate to the system activity
assert_not_equal development.parent.id, development.id # Different records
assert_equal development.parent.name, development.name # Same name
assert development.active?
assert_equal "0", development.custom_value_for(billable_field).value
# ... Inactive Activity
previously_inactive = project.time_entry_activities.find_by_name("Inactive Activity")
assert previously_inactive, "Project activity not found"
assert_equal 14, previously_inactive.parent_id # Relate to the system activity
assert_not_equal previously_inactive.parent.id, previously_inactive.id # Different records
assert_equal previously_inactive.parent.name, previously_inactive.name # Same name
assert previously_inactive.active?
assert_equal "1", previously_inactive.custom_value_for(billable_field).value
# ... QA
Jean-Philippe Lang
Use assert_nil instead of assert_equal....
r15678 assert_nil project.time_entry_activities.find_by_name("QA"), "Custom QA activity created when it wasn't modified"
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 end
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 def test_update_will_update_project_specific_activities
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 @request.session[:user_id] = 2 # manager
project_activity = TimeEntryActivity.new({
:name => 'Project Specific',
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 :parent => TimeEntryActivity.first,
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 :project => Project.find(1),
:active => true
})
assert project_activity.save
project_activity_two = TimeEntryActivity.new({
:name => 'Project Specific Two',
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 :parent => TimeEntryActivity.last,
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 :project => Project.find(1),
:active => true
})
assert project_activity_two.save
Toshi MARUYAMA
remove trailing white-spaces from test/functional/project_enumerations_controller_test.rb....
r6798
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 put :update, :project_id => 1, :enumerations => {
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 project_activity.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"}, # De-activate
project_activity_two.id => {"custom_field_values"=>{"7" => "1"}, "active"=>"0"} # De-activate
}
assert_response :redirect
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/projects/ecookbook/settings/activities'
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939
# Created project specific activities...
project = Project.find('ecookbook')
assert_equal 2, project.time_entry_activities.count
activity_one = project.time_entry_activities.find_by_name(project_activity.name)
assert activity_one, "Project activity not found"
assert_equal project_activity.id, activity_one.id
assert !activity_one.active?
activity_two = project.time_entry_activities.find_by_name(project_activity_two.name)
assert activity_two, "Project activity not found"
assert_equal project_activity_two.id, activity_two.id
assert !activity_two.active?
end
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 def test_update_when_creating_new_activities_will_convert_existing_data
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12248 assert_equal 3, TimeEntry.where(:activity_id => 9, :project_id => 1).count
Toshi MARUYAMA
remove trailing white-spaces from test/functional/project_enumerations_controller_test.rb....
r6798
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 @request.session[:user_id] = 2 # manager
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 put :update, :project_id => 1, :enumerations => {
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 "9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"} # Design, De-activate
}
assert_response :redirect
# No more TimeEntries using the system activity
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12356 assert_equal 0, TimeEntry.where(:activity_id => 9, :project_id => 1).count,
"Time Entries still assigned to system activities"
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 # All TimeEntries using project activity
project_specific_activity = TimeEntryActivity.find_by_parent_id_and_project_id(9, 1)
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12356 assert_equal 3, TimeEntry.where(:activity_id => project_specific_activity.id,
:project_id => 1).count
"No Time Entries assigned to the project activity"
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 end
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 def test_update_when_creating_new_activities_will_not_convert_existing_data_if_an_exception_is_raised
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 # TODO: Need to cause an exception on create but these tests
# aren't setup for mocking. Just create a record now so the
# second one is a dupicate
parent = TimeEntryActivity.find(9)
Toshi MARUYAMA
code format cleanup ProjectEnumerationsControllerTest...
r12349 TimeEntryActivity.create!({:name => parent.name, :project_id => 1,
Jean-Philippe Lang
Fixed test failures introduced by r14288 (#19656)....
r13909 :position => parent.position, :active => true, :parent_id => 9})
Toshi MARUYAMA
code format cleanup ProjectEnumerationsControllerTest...
r12349 TimeEntry.create!({:project_id => 1, :hours => 1.0, :user => User.find(1),
:issue_id => 3, :activity_id => 10, :spent_on => '2009-01-01'})
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12248 assert_equal 3, TimeEntry.where(:activity_id => 9, :project_id => 1).count
assert_equal 1, TimeEntry.where(:activity_id => 10, :project_id => 1).count
Toshi MARUYAMA
remove trailing white-spaces from test/functional/project_enumerations_controller_test.rb....
r6798
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 @request.session[:user_id] = 2 # manager
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 put :update, :project_id => 1, :enumerations => {
Toshi MARUYAMA
code format cleanup ProjectEnumerationsControllerTest...
r12349 # Design
"9"=> {"parent_id"=>"9", "custom_field_values"=>{"7" => "1"}, "active"=>"0"},
# Development, Change custom value
"10"=> {"parent_id"=>"10", "custom_field_values"=>{"7"=>"0"}, "active"=>"1"}
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 }
assert_response :redirect
# TimeEntries shouldn't have been reassigned on the failed record
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12356 assert_equal 3, TimeEntry.where(:activity_id => 9,
:project_id => 1).count
"Time Entries are not assigned to system activities"
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 # TimeEntries shouldn't have been reassigned on the saved record either
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12356 assert_equal 1, TimeEntry.where(:activity_id => 10,
:project_id => 1).count
"Time Entries are not assigned to system activities"
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 end
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 def test_destroy
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940 @request.session[:user_id] = 2 # manager
project_activity = TimeEntryActivity.new({
:name => 'Project Specific',
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 :parent => TimeEntryActivity.first,
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940 :project => Project.find(1),
:active => true
})
assert project_activity.save
project_activity_two = TimeEntryActivity.new({
:name => 'Project Specific Two',
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 :parent => TimeEntryActivity.last,
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940 :project => Project.find(1),
:active => true
})
assert project_activity_two.save
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 delete :destroy, :project_id => 1
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940 assert_response :redirect
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/projects/ecookbook/settings/activities'
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940
assert_nil TimeEntryActivity.find_by_id(project_activity.id)
assert_nil TimeEntryActivity.find_by_id(project_activity_two.id)
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/project_enumerations_controller_test.rb....
r6798
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940 def test_destroy_should_reassign_time_entries_back_to_the_system_activity
@request.session[:user_id] = 2 # manager
project_activity = TimeEntryActivity.new({
:name => 'Project Specific Design',
:parent => TimeEntryActivity.find(9),
:project => Project.find(1),
:active => true
})
assert project_activity.save
Toshi MARUYAMA
Rails4: replace deprecated Relation#update_all at ProjectEnumerationsControllerTest...
r12357 assert TimeEntry.where(["project_id = ? AND activity_id = ?", 1, 9]).
update_all("activity_id = '#{project_activity.id}'")
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12356 assert_equal 3, TimeEntry.where(:activity_id => project_activity.id,
:project_id => 1).count
Eric Davis
Refactor: convert ProjectEnumerations to a resource on a project....
r3961 delete :destroy, :project_id => 1
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940 assert_response :redirect
Jean-Philippe Lang
Adds leading slash to all assert_redirected_to arguments (#6887)....
r4293 assert_redirected_to '/projects/ecookbook/settings/activities'
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940
assert_nil TimeEntryActivity.find_by_id(project_activity.id)
Toshi MARUYAMA
Rails4: replace deprecated find_all_by_* at ProjectEnumerationsControllerTest...
r12248 assert_equal 0, TimeEntry.where(
:activity_id => project_activity.id,
:project_id => 1
).count,
"TimeEntries still assigned to project specific activity"
assert_equal 3, TimeEntry.where(
:activity_id => 9,
:project_id => 1
).count,
"TimeEntries still assigned to project specific activity"
Eric Davis
Refactor: move method, ProjectsController#reset_activities to ProjectEnumerationsController#destroy....
r3940 end
Eric Davis
Refactor: move method, ProjectsController#save_activities to ProjectEnumerationsController#save...
r3939 end