comparison test/unit/.svn/text-base/project_test.rb.svn-base @ 22:40f7cfd4df19

* Update to SVN trunk rev 4173
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Fri, 24 Sep 2010 14:06:04 +0100
parents 513646585e45
children 94944d00e43c
comparison
equal deleted inserted replaced
14:1d32c0a0efbf 22:40f7cfd4df19
840 assert @project.issues.empty? 840 assert @project.issues.empty?
841 end 841 end
842 842
843 end 843 end
844 844
845 context "#start_date" do
846 setup do
847 ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
848 @project = Project.generate!(:identifier => 'test0')
849 @project.trackers << Tracker.generate!
850 end
851
852 should "be nil if there are no issues on the project" do
853 assert_nil @project.start_date
854 end
855
856 should "be nil if issue tracking is disabled" do
857 Issue.generate_for_project!(@project, :start_date => Date.today)
858 @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy}
859 @project.reload
860
861 assert_nil @project.start_date
862 end
863
864 should "be the earliest start date of it's issues" do
865 early = 7.days.ago.to_date
866 Issue.generate_for_project!(@project, :start_date => Date.today)
867 Issue.generate_for_project!(@project, :start_date => early)
868
869 assert_equal early, @project.start_date
870 end
871
872 end
873
874 context "#due_date" do
875 setup do
876 ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
877 @project = Project.generate!(:identifier => 'test0')
878 @project.trackers << Tracker.generate!
879 end
880
881 should "be nil if there are no issues on the project" do
882 assert_nil @project.due_date
883 end
884
885 should "be nil if issue tracking is disabled" do
886 Issue.generate_for_project!(@project, :due_date => Date.today)
887 @project.enabled_modules.find_all_by_name('issue_tracking').each {|m| m.destroy}
888 @project.reload
889
890 assert_nil @project.due_date
891 end
892
893 should "be the latest due date of it's issues" do
894 future = 7.days.from_now.to_date
895 Issue.generate_for_project!(@project, :due_date => future)
896 Issue.generate_for_project!(@project, :due_date => Date.today)
897
898 assert_equal future, @project.due_date
899 end
900
901 should "be the latest due date of it's versions" do
902 future = 7.days.from_now.to_date
903 @project.versions << Version.generate!(:effective_date => future)
904 @project.versions << Version.generate!(:effective_date => Date.today)
905
906
907 assert_equal future, @project.due_date
908
909 end
910
911 should "pick the latest date from it's issues and versions" do
912 future = 7.days.from_now.to_date
913 far_future = 14.days.from_now.to_date
914 Issue.generate_for_project!(@project, :due_date => far_future)
915 @project.versions << Version.generate!(:effective_date => future)
916
917 assert_equal far_future, @project.due_date
918 end
919
920 end
921
922 context "Project#completed_percent" do
923 setup do
924 ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests
925 @project = Project.generate!(:identifier => 'test0')
926 @project.trackers << Tracker.generate!
927 end
928
929 context "no versions" do
930 should "be 100" do
931 assert_equal 100, @project.completed_percent
932 end
933 end
934
935 context "with versions" do
936 should "return 0 if the versions have no issues" do
937 Version.generate!(:project => @project)
938 Version.generate!(:project => @project)
939
940 assert_equal 0, @project.completed_percent
941 end
942
943 should "return 100 if the version has only closed issues" do
944 v1 = Version.generate!(:project => @project)
945 Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('Closed'), :fixed_version => v1)
946 v2 = Version.generate!(:project => @project)
947 Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('Closed'), :fixed_version => v2)
948
949 assert_equal 100, @project.completed_percent
950 end
951
952 should "return the averaged completed percent of the versions (not weighted)" do
953 v1 = Version.generate!(:project => @project)
954 Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('New'), :estimated_hours => 10, :done_ratio => 50, :fixed_version => v1)
955 v2 = Version.generate!(:project => @project)
956 Issue.generate_for_project!(@project, :status => IssueStatus.find_by_name('New'), :estimated_hours => 10, :done_ratio => 50, :fixed_version => v2)
957
958 assert_equal 50, @project.completed_percent
959 end
960
961 end
962 end
845 end 963 end