##// END OF EJS Templates
The descendant count in the issues delete confirmation message is wrong if issues share some descendants....
The descendant count in the issues delete confirmation message is wrong if issues share some descendants. git-svn-id: http://svn.redmine.org/redmine/trunk@13818 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r13313:5222650d9523
r13436:bfdd9f7c295d
Show More
version_test.rb
251 lines | 10.3 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Fixes VersionTest class....
r1887 # Redmine - project management software
Toshi MARUYAMA
update copyright year (#15977)...
r12461 # Copyright (C) 2006-2014 Jean-Philippe Lang
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 #
# 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/version_test.rb....
r6635 #
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 # 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/version_test.rb....
r6635 #
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 # 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
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class VersionTest < ActiveSupport::TestCase
Toshi MARUYAMA
code layout clean up VersionTest...
r11651 fixtures :projects, :users, :issues, :issue_statuses, :trackers,
:enumerations, :versions, :projects_trackers
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886
def test_create
Toshi MARUYAMA
code layout clean up VersionTest...
r11651 v = Version.new(:project => Project.find(1), :name => '1.1',
:effective_date => '2011-03-25')
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 assert v.save
Jean-Philippe Lang
Adds version status to limit issue assignments (#1245)....
r2906 assert_equal 'open', v.status
Jean-Philippe Lang
Adds REST API for versions (#7403)....
r6060 assert_equal 'none', v.sharing
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 def test_invalid_effective_date_validation
Toshi MARUYAMA
code layout clean up VersionTest...
r11651 v = Version.new(:project => Project.find(1), :name => '1.1',
:effective_date => '99999-01-01')
Jean-Philippe Lang
Fixed version date validation (#12359)....
r10583 assert !v.valid?
v.effective_date = '2012-11-33'
assert !v.valid?
v.effective_date = '2012-31-11'
assert !v.valid?
Jean-Philippe Lang
Adds a custom validator for dates (#12736)....
r10894 v.effective_date = '-2012-31-11'
assert !v.valid?
Jean-Philippe Lang
Fixed version date validation (#12359)....
r10583 v.effective_date = 'ABC'
assert !v.valid?
Jean-Philippe Lang
Changed assertions to make them work with Rails2/3 ruby1.8/1.9 different behaviours....
r8987 assert_include I18n.translate('activerecord.errors.messages.not_a_date'),
v.errors[:effective_date]
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 def test_progress_should_be_0_with_no_assigned_issues
project = Project.find(1)
v = Version.create!(:project => project, :name => 'Progress')
Jean-Philippe Lang
Deprecates Version#*_pourcent in favour of #*_percent (#12724)....
r10883 assert_equal 0, v.completed_percent
assert_equal 0, v.closed_percent
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 def test_progress_should_be_0_with_unbegun_assigned_issues
project = Project.find(1)
v = Version.create!(:project => project, :name => 'Progress')
add_issue(v)
add_issue(v, :done_ratio => 0)
Jean-Philippe Lang
Deprecates Version#*_pourcent in favour of #*_percent (#12724)....
r10883 assert_progress_equal 0, v.completed_percent
assert_progress_equal 0, v.closed_percent
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 def test_progress_should_be_100_with_closed_assigned_issues
project = Project.find(1)
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 status = IssueStatus.where(:is_closed => true).first
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 v = Version.create!(:project => project, :name => 'Progress')
add_issue(v, :status => status)
add_issue(v, :status => status, :done_ratio => 20)
add_issue(v, :status => status, :done_ratio => 70, :estimated_hours => 25)
add_issue(v, :status => status, :estimated_hours => 15)
Jean-Philippe Lang
Deprecates Version#*_pourcent in favour of #*_percent (#12724)....
r10883 assert_progress_equal 100.0, v.completed_percent
assert_progress_equal 100.0, v.closed_percent
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 def test_progress_should_consider_done_ratio_of_open_assigned_issues
project = Project.find(1)
v = Version.create!(:project => project, :name => 'Progress')
add_issue(v)
add_issue(v, :done_ratio => 20)
add_issue(v, :done_ratio => 70)
Jean-Philippe Lang
Deprecates Version#*_pourcent in favour of #*_percent (#12724)....
r10883 assert_progress_equal (0.0 + 20.0 + 70.0)/3, v.completed_percent
assert_progress_equal 0, v.closed_percent
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 def test_progress_should_consider_closed_issues_as_completed
project = Project.find(1)
v = Version.create!(:project => project, :name => 'Progress')
add_issue(v)
add_issue(v, :done_ratio => 20)
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 add_issue(v, :status => IssueStatus.where(:is_closed => true).first)
Jean-Philippe Lang
Deprecates Version#*_pourcent in favour of #*_percent (#12724)....
r10883 assert_progress_equal (0.0 + 20.0 + 100.0)/3, v.completed_percent
assert_progress_equal (100.0)/3, v.closed_percent
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Toshi MARUYAMA
fix typos at unit version test...
r12786 def test_progress_should_consider_estimated_hours_to_weight_issues
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 project = Project.find(1)
v = Version.create!(:project => project, :name => 'Progress')
add_issue(v, :estimated_hours => 10)
add_issue(v, :estimated_hours => 20, :done_ratio => 30)
add_issue(v, :estimated_hours => 40, :done_ratio => 10)
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 add_issue(v, :estimated_hours => 25, :status => IssueStatus.where(:is_closed => true).first)
Jean-Philippe Lang
Deprecates Version#*_pourcent in favour of #*_percent (#12724)....
r10883 assert_progress_equal (10.0*0 + 20.0*0.3 + 40*0.1 + 25.0*1)/95.0*100, v.completed_percent
assert_progress_equal 25.0/95.0*100, v.closed_percent
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Toshi MARUYAMA
fix typos at unit version test...
r12786 def test_progress_should_consider_average_estimated_hours_to_weight_unestimated_issues
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 project = Project.find(1)
v = Version.create!(:project => project, :name => 'Progress')
add_issue(v, :done_ratio => 20)
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 add_issue(v, :status => IssueStatus.where(:is_closed => true).first)
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 add_issue(v, :estimated_hours => 10, :done_ratio => 30)
add_issue(v, :estimated_hours => 40, :done_ratio => 10)
Jean-Philippe Lang
Deprecates Version#*_pourcent in favour of #*_percent (#12724)....
r10883 assert_progress_equal (25.0*0.2 + 25.0*1 + 10.0*0.3 + 40.0*0.1)/100.0*100, v.completed_percent
assert_progress_equal 25.0/100.0*100, v.closed_percent
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Eric Davis
Rewrite the Gantt chart. #6276...
r3958
Jean-Philippe Lang
Sort issues by scheduled versions first then unscheduled versions....
r9968 def test_should_sort_scheduled_then_unscheduled_versions
Version.delete_all
v4 = Version.create!(:project_id => 1, :name => 'v4')
v3 = Version.create!(:project_id => 1, :name => 'v2', :effective_date => '2012-07-14')
v2 = Version.create!(:project_id => 1, :name => 'v1')
v1 = Version.create!(:project_id => 1, :name => 'v3', :effective_date => '2012-08-02')
v5 = Version.create!(:project_id => 1, :name => 'v5', :effective_date => '2012-07-02')
Jean-Philippe Lang
Makes Version#<=> consistent with SQL sort....
r9969 assert_equal [v5, v3, v1, v2, v4], [v1, v2, v3, v4, v5].sort
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 assert_equal [v5, v3, v1, v2, v4], Version.sorted.to_a
Jean-Philippe Lang
Sort issues by scheduled versions first then unscheduled versions....
r9968 end
Jean-Philippe Lang
Adds a few tests....
r13313 def test_should_sort_versions_with_same_date_by_name
v1 = Version.new(:effective_date => '2014-12-03', :name => 'v2')
v2 = Version.new(:effective_date => '2014-12-03', :name => 'v1')
assert_equal [v2, v1], [v1, v2].sort
end
Jean-Philippe Lang
Do not consider that versions that are due today are completed....
r10214 def test_completed_should_be_false_when_due_today
version = Version.create!(:project_id => 1, :effective_date => Date.today, :name => 'Due today')
assert_equal false, version.completed?
end
Jean-Philippe Lang
Removed some shoulda context....
r11635 test "#behind_schedule? should be false if there are no issues assigned" do
version = Version.generate!(:effective_date => Date.yesterday)
assert_equal false, version.behind_schedule?
end
test "#behind_schedule? should be false if there is no effective_date" do
version = Version.generate!(:effective_date => nil)
assert_equal false, version.behind_schedule?
end
test "#behind_schedule? should be false if all of the issues are ahead of schedule" do
Toshi MARUYAMA
fix unit VersionTest failure...
r11638 version = Version.create!(:project_id => 1, :name => 'test', :effective_date => 7.days.from_now.to_date)
Jean-Philippe Lang
Removed some shoulda context....
r11635 add_issue(version, :start_date => 7.days.ago, :done_ratio => 60) # 14 day span, 60% done, 50% time left
add_issue(version, :start_date => 7.days.ago, :done_ratio => 60) # 14 day span, 60% done, 50% time left
assert_equal 60, version.completed_percent
assert_equal false, version.behind_schedule?
end
test "#behind_schedule? should be true if any of the issues are behind schedule" do
Toshi MARUYAMA
fix unit VersionTest failure...
r11638 version = Version.create!(:project_id => 1, :name => 'test', :effective_date => 7.days.from_now.to_date)
Jean-Philippe Lang
Removed some shoulda context....
r11635 add_issue(version, :start_date => 7.days.ago, :done_ratio => 60) # 14 day span, 60% done, 50% time left
add_issue(version, :start_date => 7.days.ago, :done_ratio => 20) # 14 day span, 20% done, 50% time left
assert_equal 40, version.completed_percent
assert_equal true, version.behind_schedule?
end
test "#behind_schedule? should be false if all of the issues are complete" do
Toshi MARUYAMA
fix unit VersionTest failure...
r11638 version = Version.create!(:project_id => 1, :name => 'test', :effective_date => 7.days.from_now.to_date)
Jean-Philippe Lang
Removed some shoulda context....
r11635 add_issue(version, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)) # 7 day span
add_issue(version, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)) # 7 day span
assert_equal 100, version.completed_percent
assert_equal false, version.behind_schedule?
end
test "#estimated_hours should return 0 with no assigned issues" do
version = Version.generate!
assert_equal 0, version.estimated_hours
end
test "#estimated_hours should return 0 with no estimated hours" do
Toshi MARUYAMA
fix unit VersionTest failure...
r11638 version = Version.create!(:project_id => 1, :name => 'test')
Jean-Philippe Lang
Removed some shoulda context....
r11635 add_issue(version)
assert_equal 0, version.estimated_hours
end
test "#estimated_hours should return return the sum of estimated hours" do
Toshi MARUYAMA
fix unit VersionTest failure...
r11638 version = Version.create!(:project_id => 1, :name => 'test')
Jean-Philippe Lang
Removed some shoulda context....
r11635 add_issue(version, :estimated_hours => 2.5)
add_issue(version, :estimated_hours => 5)
assert_equal 7.5, version.estimated_hours
end
test "#estimated_hours should return the sum of leaves estimated hours" do
Toshi MARUYAMA
fix unit VersionTest failure...
r11638 version = Version.create!(:project_id => 1, :name => 'test')
Jean-Philippe Lang
Removed some shoulda context....
r11635 parent = add_issue(version)
add_issue(version, :estimated_hours => 2.5, :parent_issue_id => parent.id)
add_issue(version, :estimated_hours => 5, :parent_issue_id => parent.id)
assert_equal 7.5, version.estimated_hours
Jean-Philippe Lang
Fixes calculation of version estimated hours with subtasks (#5265)....
r3519 end
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009
test "should update all issue's fixed_version associations in case the hierarchy changed XXX" do
User.current = User.find(1) # Need the admin's permissions
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 @version = Version.find(7)
# Separate hierarchy
project_1_issue = Issue.find(1)
project_1_issue.fixed_version = @version
Jean-Philippe Lang
ruby1.9 compatibility...
r4477 assert project_1_issue.save, project_1_issue.errors.full_messages.to_s
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 project_5_issue = Issue.find(6)
project_5_issue.fixed_version = @version
assert project_5_issue.save
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 # Project
project_2_issue = Issue.find(4)
project_2_issue.fixed_version = @version
assert project_2_issue.save
# Update the sharing
@version.sharing = 'none'
assert @version.save
# Project 1 now out of the shared scope
project_1_issue.reload
Toshi MARUYAMA
code layout clean up VersionTest...
r11651 assert_equal nil, project_1_issue.fixed_version,
"Fixed version is still set after changing the Version's sharing"
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 # Project 5 now out of the shared scope
project_5_issue.reload
Toshi MARUYAMA
code layout clean up VersionTest...
r11651 assert_equal nil, project_5_issue.fixed_version,
"Fixed version is still set after changing the Version's sharing"
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009
# Project 2 issue remains
project_2_issue.reload
assert_equal @version, project_2_issue.fixed_version
end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 private
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 def add_issue(version, attributes={})
Issue.create!({:project => version.project,
:fixed_version => version,
:subject => 'Test',
Jean-Philippe Lang
Replaces find(:first) calls....
r10701 :author => User.first,
:tracker => version.project.trackers.first}.merge(attributes))
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 end
Toshi MARUYAMA
remove trailing white-spaces from test/unit/version_test.rb....
r6635
Jean-Philippe Lang
Use estimated hours to weight issues in version completion calculation (#2182)....
r2347 def assert_progress_equal(expected_float, actual_float, message="")
assert_in_delta(expected_float, actual_float, 0.000001, message="")
end
Jean-Philippe Lang
Fixed: invalid effective date (eg. 99999-01-01) causes an error on version edition screen....
r1886 end