Mercurial > hg > soundsoftware-site
diff test/unit/.svn/text-base/issue_test.rb.svn-base @ 37:94944d00e43c
* Update to SVN trunk rev 4411
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Fri, 19 Nov 2010 13:24:41 +0000 |
parents | 40f7cfd4df19 |
children | af80e5618e9b |
line wrap: on
line diff
--- a/test/unit/.svn/text-base/issue_test.rb.svn-base Fri Sep 24 14:06:04 2010 +0100 +++ b/test/unit/.svn/text-base/issue_test.rb.svn-base Fri Nov 19 13:24:41 2010 +0000 @@ -503,6 +503,17 @@ assert !closed_statuses.empty? end + def test_rescheduling_an_issue_should_reschedule_following_issue + issue1 = Issue.create!(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :subject => '-', :start_date => Date.today, :due_date => Date.today + 2) + issue2 = Issue.create!(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :subject => '-', :start_date => Date.today, :due_date => Date.today + 2) + IssueRelation.create!(:issue_from => issue1, :issue_to => issue2, :relation_type => IssueRelation::TYPE_PRECEDES) + assert_equal issue1.due_date + 1, issue2.reload.start_date + + issue1.due_date = Date.today + 5 + issue1.save! + assert_equal issue1.due_date + 1, issue2.reload.start_date + end + def test_overdue assert Issue.new(:due_date => 1.day.ago.to_date).overdue? assert !Issue.new(:due_date => Date.today).overdue? @@ -532,9 +543,28 @@ assert Issue.new(:start_date => 100.days.ago.to_date, :due_date => Date.today, :done_ratio => 90).behind_schedule? end end - - def test_assignable_users - assert_kind_of User, Issue.find(1).assignable_users.first + + context "#assignable_users" do + should "be Users" do + assert_kind_of User, Issue.find(1).assignable_users.first + end + + should "include the issue author" do + project = Project.find(1) + non_project_member = User.generate! + issue = Issue.generate_for_project!(project, :author => non_project_member) + + assert issue.assignable_users.include?(non_project_member) + end + + should "not show the issue author twice" do + assignable_user_ids = Issue.find(1).assignable_users.collect(&:id) + assert_equal 2, assignable_user_ids.length + + assignable_user_ids.each do |user_id| + assert_equal 1, assignable_user_ids.select {|i| i == user_id}.length, "User #{user_id} appears more or less than once" + end + end end def test_create_should_send_email_notification @@ -544,7 +574,7 @@ assert issue.save assert_equal 1, ActionMailer::Base.deliveries.size end - + def test_stale_issue_should_not_send_email_notification ActionMailer::Base.deliveries.clear issue = Issue.find(1) @@ -593,6 +623,9 @@ @issue = Issue.find(1) @issue_status = IssueStatus.find(1) @issue_status.update_attribute(:default_done_ratio, 50) + @issue2 = Issue.find(2) + @issue_status2 = IssueStatus.find(2) + @issue_status2.update_attribute(:default_done_ratio, 0) end context "with Setting.issue_done_ratio using the issue_field" do @@ -602,6 +635,7 @@ should "read the issue's field" do assert_equal 0, @issue.done_ratio + assert_equal 30, @issue2.done_ratio end end @@ -612,6 +646,7 @@ should "read the Issue Status's default done ratio" do assert_equal 50, @issue.done_ratio + assert_equal 0, @issue2.done_ratio end end end @@ -621,6 +656,9 @@ @issue = Issue.find(1) @issue_status = IssueStatus.find(1) @issue_status.update_attribute(:default_done_ratio, 50) + @issue2 = Issue.find(2) + @issue_status2 = IssueStatus.find(2) + @issue_status2.update_attribute(:default_done_ratio, 0) end context "with Setting.issue_done_ratio using the issue_field" do @@ -630,8 +668,10 @@ should "not change the issue" do @issue.update_done_ratio_from_issue_status + @issue2.update_done_ratio_from_issue_status - assert_equal 0, @issue.done_ratio + assert_equal 0, @issue.read_attribute(:done_ratio) + assert_equal 30, @issue2.read_attribute(:done_ratio) end end @@ -640,10 +680,12 @@ Setting.issue_done_ratio = 'issue_status' end - should "not change the issue's done ratio" do + should "change the issue's done ratio" do @issue.update_done_ratio_from_issue_status + @issue2.update_done_ratio_from_issue_status - assert_equal 50, @issue.done_ratio + assert_equal 50, @issue.read_attribute(:done_ratio) + assert_equal 0, @issue2.read_attribute(:done_ratio) end end end @@ -726,4 +768,49 @@ assert issue.save assert_equal before, Issue.on_active_project.length end + + context "Issue#recipients" do + setup do + @project = Project.find(1) + @author = User.generate_with_protected! + @assignee = User.generate_with_protected! + @issue = Issue.generate_for_project!(@project, :assigned_to => @assignee, :author => @author) + end + + should "include project recipients" do + assert @project.recipients.present? + @project.recipients.each do |project_recipient| + assert @issue.recipients.include?(project_recipient) + end + end + + should "include the author if the author is active" do + assert @issue.author, "No author set for Issue" + assert @issue.recipients.include?(@issue.author.mail) + end + + should "include the assigned to user if the assigned to user is active" do + assert @issue.assigned_to, "No assigned_to set for Issue" + assert @issue.recipients.include?(@issue.assigned_to.mail) + end + + should "not include users who opt out of all email" do + @author.update_attribute(:mail_notification, :none) + + assert !@issue.recipients.include?(@issue.author.mail) + end + + should "not include the issue author if they are only notified of assigned issues" do + @author.update_attribute(:mail_notification, :only_assigned) + + assert !@issue.recipients.include?(@issue.author.mail) + end + + should "not include the assigned user if they are only notified of owned issues" do + @assignee.update_attribute(:mail_notification, :only_owner) + + assert !@issue.recipients.include?(@issue.assigned_to.mail) + end + + end end