##// 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:

r15218:d9a0084b7640
r15741:f8df935dcada
Show More
time_entry_test.rb
175 lines | 6.3 KiB | text/x-ruby | RubyLexer
/ test / unit / time_entry_test.rb
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632 #
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 # 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.
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632 #
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 # 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__)
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class TimeEntryTest < ActiveSupport::TestCase
Toshi MARUYAMA
add missing fixtures at unit time entry test in running on empty database...
r7326 fixtures :issues, :projects, :users, :time_entries,
Jean-Philippe Lang
Don't use auth_sources fixtures when not needed....
r8795 :members, :roles, :member_roles,
Toshi MARUYAMA
add missing fixtures at unit time entry test in running on empty database...
r7326 :trackers, :issue_statuses,
:projects_trackers,
:journals, :journal_details,
:issue_categories, :enumerations,
:groups_users,
Jean-Philippe Lang
Removed unused fixtures....
r11091 :enabled_modules
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305
Jean-Philippe Lang
Adds a role setting that viewing all or own time entries (#8929)....
r13893 def test_visibility_with_permission_to_view_all_time_entries
user = User.generate!
role = Role.generate!(:permissions => [:view_time_entries], :time_entries_visibility => 'all')
Role.non_member.remove_permission! :view_time_entries
project = Project.find(1)
User.add_to_project user, project, role
own = TimeEntry.generate! :user => user, :project => project
other = TimeEntry.generate! :user => User.find(2), :project => project
assert TimeEntry.visible(user).find_by_id(own.id)
assert TimeEntry.visible(user).find_by_id(other.id)
assert own.visible?(user)
assert other.visible?(user)
end
def test_visibility_with_permission_to_view_own_time_entries
user = User.generate!
role = Role.generate!(:permissions => [:view_time_entries], :time_entries_visibility => 'own')
Role.non_member.remove_permission! :view_time_entries
project = Project.find(1)
User.add_to_project user, project, role
own = TimeEntry.generate! :user => user, :project => project
other = TimeEntry.generate! :user => User.find(2), :project => project
assert TimeEntry.visible(user).find_by_id(own.id)
assert_nil TimeEntry.visible(user).find_by_id(other.id)
assert own.visible?(user)
assert_equal false, other.visible?(user)
end
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 def test_hours_format
assertions = { "2" => 2.0,
"21.1" => 21.1,
"2,1" => 2.1,
Jean-Philippe Lang
Fixed: no error is raised when entering invalid hours on the issue update form (#2465)....
r2249 "1,5h" => 1.5,
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 "7:12" => 7.2,
"10h" => 10.0,
"10 h" => 10.0,
"45m" => 0.75,
"45 m" => 0.75,
"3h15" => 3.25,
"3h 15" => 3.25,
"3 h 15" => 3.25,
"3 h 15m" => 3.25,
"3 h 15 m" => 3.25,
"3 hours" => 3.0,
"12min" => 0.2,
Jean-Philippe Lang
Makes time syntax case insensitive (#10635)....
r9253 "12 Min" => 0.2,
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 }
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 assertions.each do |k, v|
t = TimeEntry.new(:hours => k)
Jean-Philippe Lang
Fixed: no error is raised when entering invalid hours on the issue update form (#2465)....
r2249 assert_equal v, t.hours, "Converting #{k} failed:"
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 end
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Force TimeEntry#hours default to nil (#3075, #4449)....
r3118 def test_hours_should_default_to_nil
assert_nil TimeEntry.new.hours
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Fixes TimeEntry#spent_on= so that datetimes don't get stored in SQLite3 (#7258)....
r4588 def test_spent_on_with_blank
c = TimeEntry.new
c.spent_on = ''
assert_nil c.spent_on
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Fixes TimeEntry#spent_on= so that datetimes don't get stored in SQLite3 (#7258)....
r4588 def test_spent_on_with_nil
c = TimeEntry.new
c.spent_on = nil
assert_nil c.spent_on
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Fixes TimeEntry#spent_on= so that datetimes don't get stored in SQLite3 (#7258)....
r4588 def test_spent_on_with_string
c = TimeEntry.new
c.spent_on = "2011-01-14"
assert_equal Date.parse("2011-01-14"), c.spent_on
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Adds a test for TimeEntry#spent_on= with invalid string....
r4589 def test_spent_on_with_invalid_string
c = TimeEntry.new
c.spent_on = "foo"
assert_nil c.spent_on
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Fixes TimeEntry#spent_on= so that datetimes don't get stored in SQLite3 (#7258)....
r4588 def test_spent_on_with_date
c = TimeEntry.new
c.spent_on = Date.today
assert_equal Date.today, c.spent_on
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/time_entry_test.rb....
r6632
Jean-Philippe Lang
Fixes TimeEntry#spent_on= so that datetimes don't get stored in SQLite3 (#7258)....
r4588 def test_spent_on_with_time
c = TimeEntry.new
c.spent_on = Time.now
Jean-Philippe Lang
Only make sure it's a date....
r15218 assert_kind_of Date, c.spent_on
Jean-Philippe Lang
Fixes TimeEntry#spent_on= so that datetimes don't get stored in SQLite3 (#7258)....
r4588 end
Eric Davis
Refactor: move method to Model....
r3972
Toshi MARUYAMA
add unit test to validate time entry...
r7327 def test_validate_time_entry
anon = User.anonymous
project = Project.find(1)
issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => anon.id, :status_id => 1,
:priority => IssuePriority.all.first, :subject => 'test_create',
:description => 'IssueTest#test_create', :estimated_hours => '1:30')
assert issue.save
activity = TimeEntryActivity.find_by_name('Design')
te = TimeEntry.create(:spent_on => '2010-01-01',
:hours => 100000,
:issue => issue,
:project => project,
:user => anon,
:activity => activity)
assert_equal 1, te.errors.count
end
Jean-Philippe Lang
Validates that activity belongs to project activities (#19656)....
r13906 def test_acitivity_should_belong_to_project_activities
activity = TimeEntryActivity.create!(:name => 'Other project activity', :project_id => 2, :active => true)
entry = TimeEntry.new(:spent_on => Date.today, :hours => 1.0, :user => User.find(1), :project_id => 1, :activity => activity)
assert !entry.valid?
assert_include I18n.translate('activerecord.errors.messages.inclusion'), entry.errors[:activity_id]
end
Jean-Philippe Lang
Time entry with 2 digits year should not validate (#3107)....
r11242 def test_spent_on_with_2_digits_year_should_not_be_valid
entry = TimeEntry.new(:project => Project.find(1), :user => User.find(1), :activity => TimeEntryActivity.first, :hours => 1)
entry.spent_on = "09-02-04"
assert !entry.valid?
assert_include I18n.translate('activerecord.errors.messages.not_a_date'), entry.errors[:spent_on]
end
Toshi MARUYAMA
add unit test to set project if project is nil at unit time entry test...
r7332 def test_set_project_if_nil
anon = User.anonymous
project = Project.find(1)
issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => anon.id, :status_id => 1,
:priority => IssuePriority.all.first, :subject => 'test_create',
:description => 'IssueTest#test_create', :estimated_hours => '1:30')
assert issue.save
activity = TimeEntryActivity.find_by_name('Design')
te = TimeEntry.create(:spent_on => '2010-01-01',
:hours => 10,
:issue => issue,
:user => anon,
:activity => activity)
assert_equal project.id, te.project.id
end
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 end