Mercurial > hg > soundsoftware-site
comparison test/unit/project_test.rb @ 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 |