diff test/unit/.svn/text-base/version_test.rb.svn-base @ 25:9fd6221709a6 luisf

* Merge cannam branch
author Chris Cannam
date Fri, 24 Sep 2010 15:51:28 +0100
parents 40f7cfd4df19
children af80e5618e9b 8661b858af72
line wrap: on
line diff
--- a/test/unit/.svn/text-base/version_test.rb.svn-base	Fri Sep 24 15:33:13 2010 +0100
+++ b/test/unit/.svn/text-base/version_test.rb.svn-base	Fri Sep 24 15:51:28 2010 +0100
@@ -104,7 +104,57 @@
     assert_progress_equal (25.0*0.2 + 25.0*1 + 10.0*0.3 + 40.0*0.1)/100.0*100, v.completed_pourcent
     assert_progress_equal 25.0/100.0*100, v.closed_pourcent
   end
-  
+
+  context "#behind_schedule?" do
+    setup do
+      ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
+      @project = Project.generate!(:identifier => 'test0')
+      @project.trackers << Tracker.generate!
+
+      @version = Version.generate!(:project => @project, :effective_date => nil)
+    end
+    
+    should "be false if there are no issues assigned" do
+      @version.update_attribute(:effective_date, Date.yesterday)
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be false if there is no effective_date" do
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be false if all of the issues are ahead of schedule" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60), # 14 day span, 60% done, 50% time left
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60) # 14 day span, 60% done, 50% time left
+                              ]
+      assert_equal 60, @version.completed_pourcent
+      assert_equal false, @version.behind_schedule?
+    end
+
+    should "be true if any of the issues are behind schedule" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 60), # 14 day span, 60% done, 50% time left
+                               Issue.generate_for_project!(@project, :start_date => 7.days.ago, :done_ratio => 20) # 14 day span, 20% done, 50% time left
+                              ]
+      assert_equal 40, @version.completed_pourcent
+      assert_equal true, @version.behind_schedule?
+    end
+
+    should "be false if all of the issues are complete" do
+      @version.update_attribute(:effective_date, 7.days.from_now.to_date)
+      @version.fixed_issues = [
+                               Issue.generate_for_project!(@project, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)), # 7 day span
+                               Issue.generate_for_project!(@project, :start_date => 14.days.ago, :done_ratio => 100, :status => IssueStatus.find(5)) # 7 day span
+                              ]
+      assert_equal 100, @version.completed_pourcent
+      assert_equal false, @version.behind_schedule?
+
+    end
+  end
+
   context "#estimated_hours" do
     setup do
       @version = Version.create!(:project_id => 1, :name => '#estimated_hours')