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