Mercurial > hg > soundsoftware-site
diff test/unit/lib/redmine/helpers/gantt_test.rb @ 1464:261b3d9a4903 redmine-2.4
Update to Redmine 2.4 branch rev 12663
author | Chris Cannam |
---|---|
date | Tue, 14 Jan 2014 14:37:42 +0000 |
parents | 433d4f72a19b |
children | e248c7af89ec |
line wrap: on
line diff
--- a/test/unit/lib/redmine/helpers/gantt_test.rb Fri Jun 14 09:05:06 2013 +0100 +++ b/test/unit/lib/redmine/helpers/gantt_test.rb Tue Jan 14 14:37:42 2014 +0000 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2012 Jean-Philippe Lang +# Copyright (C) 2006-2013 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 @@ -26,7 +26,6 @@ :member_roles, :members, :enabled_modules, - :workflows, :versions, :groups_users @@ -34,6 +33,7 @@ include ProjectsHelper include IssuesHelper include ERB::Util + include Rails.application.routes.url_helpers def setup setup_with_controller @@ -49,7 +49,7 @@ @project = project @gantt = Redmine::Helpers::Gantt.new(options) @gantt.project = @project - @gantt.query = Query.create!(:project => @project, :name => 'Gantt') + @gantt.query = IssueQuery.create!(:project => @project, :name => 'Gantt') @gantt.view = self @gantt.instance_variable_set('@date_from', options[:date_from] || (today - 14)) @gantt.instance_variable_set('@date_to', options[:date_to] || (today + 14)) @@ -57,11 +57,26 @@ context "#number_of_rows" do context "with one project" do - should "return the number of rows just for that project" + should "return the number of rows just for that project" do + p1, p2 = Project.generate!, Project.generate! + i1, i2 = Issue.generate!(:project => p1), Issue.generate!(:project => p2) + create_gantt(p1) + assert_equal 2, @gantt.number_of_rows + end end context "with no project" do - should "return the total number of rows for all the projects, resursively" + should "return the total number of rows for all the projects, resursively" do + p1, p2 = Project.generate!, Project.generate! + create_gantt(nil) + #fix the return value of #number_of_rows_on_project() to an arbitrary value + #so that we really only test #number_of_rows + @gantt.stubs(:number_of_rows_on_project).returns(7) + #also fix #projects because we want to test #number_of_rows in isolation + @gantt.stubs(:projects).returns(Project.all) + #actual test + assert_equal Project.count*7, @gantt.number_of_rows + end end should "not exceed max_rows option" do @@ -746,4 +761,81 @@ context "#to_pdf" do should "be tested" end + + def test_sort_issues_no_date + project = Project.generate! + issue1 = Issue.generate!(:subject => "test", :project => project) + issue2 = Issue.generate!(:subject => "test", :project => project) + assert issue1.root_id < issue2.root_id + child1 = Issue.generate!(:parent_issue_id => issue1.id, :subject => 'child', + :project => project) + child2 = Issue.generate!(:parent_issue_id => issue1.id, :subject => 'child', + :project => project) + child3 = Issue.generate!(:parent_issue_id => child1.id, :subject => 'child', + :project => project) + assert_equal child1.root_id, child2.root_id + assert child1.lft < child2.lft + assert child3.lft < child2.lft + issues = [child3, child2, child1, issue2, issue1] + Redmine::Helpers::Gantt.sort_issues!(issues) + assert_equal [issue1.id, child1.id, child3.id, child2.id, issue2.id], + issues.map{|v| v.id} + end + + def test_sort_issues_root_only + project = Project.generate! + issue1 = Issue.generate!(:subject => "test", :project => project) + issue2 = Issue.generate!(:subject => "test", :project => project) + issue3 = Issue.generate!(:subject => "test", :project => project, + :start_date => (today - 1)) + issue4 = Issue.generate!(:subject => "test", :project => project, + :start_date => (today - 2)) + issues = [issue4, issue3, issue2, issue1] + Redmine::Helpers::Gantt.sort_issues!(issues) + assert_equal [issue1.id, issue2.id, issue4.id, issue3.id], + issues.map{|v| v.id} + end + + def test_sort_issues_tree + project = Project.generate! + issue1 = Issue.generate!(:subject => "test", :project => project) + issue2 = Issue.generate!(:subject => "test", :project => project, + :start_date => (today - 2)) + issue1_child1 = + Issue.generate!(:parent_issue_id => issue1.id, :subject => 'child', + :project => project) + issue1_child2 = + Issue.generate!(:parent_issue_id => issue1.id, :subject => 'child', + :project => project, :start_date => (today - 10)) + issue1_child1_child1 = + Issue.generate!(:parent_issue_id => issue1_child1.id, :subject => 'child', + :project => project, :start_date => (today - 8)) + issue1_child1_child2 = + Issue.generate!(:parent_issue_id => issue1_child1.id, :subject => 'child', + :project => project, :start_date => (today - 9)) + issue1_child1_child1_logic = Redmine::Helpers::Gantt.sort_issue_logic(issue1_child1_child1) + assert_equal [[today - 10, issue1.id], [today - 9, issue1_child1.id], + [today - 8, issue1_child1_child1.id]], + issue1_child1_child1_logic + issue1_child1_child2_logic = Redmine::Helpers::Gantt.sort_issue_logic(issue1_child1_child2) + assert_equal [[today - 10, issue1.id], [today - 9, issue1_child1.id], + [today - 9, issue1_child1_child2.id]], + issue1_child1_child2_logic + issues = [issue1_child1_child2, issue1_child1_child1, issue1_child2, + issue1_child1, issue2, issue1] + Redmine::Helpers::Gantt.sort_issues!(issues) + assert_equal [issue1.id, issue1_child1.id, issue1_child2.id, + issue1_child1_child2.id, issue1_child1_child1.id, issue2.id], + issues.map{|v| v.id} + end + + def test_sort_versions + project = Project.generate! + version1 = Version.create!(:project => project, :name => 'test1') + version2 = Version.create!(:project => project, :name => 'test2', :effective_date => '2013-10-25') + version3 = Version.create!(:project => project, :name => 'test3') + version4 = Version.create!(:project => project, :name => 'test4', :effective_date => '2013-10-02') + + assert_equal versions.sort, Redmine::Helpers::Gantt.sort_versions!(versions) + end end