Added User#notify_about? to check when a user should be notified about an event

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4218 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Eric Davis
2010-09-28 18:22:10 +00:00
parent a61ee73e69
commit c059300d99
6 changed files with 129 additions and 6 deletions
+22 -1
View File
@@ -742,7 +742,9 @@ class IssueTest < ActiveSupport::TestCase
context "Issue#recipients" do
setup do
@project = Project.find(1)
@issue = Issue.generate_for_project!(@project, :assigned_to => User.generate_with_protected!)
@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
@@ -761,5 +763,24 @@ class IssueTest < ActiveSupport::TestCase
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
+1 -1
View File
@@ -152,7 +152,7 @@ class MailHandlerTest < ActiveSupport::TestCase
assert !issue.new_record?
issue.reload
assert issue.watched_by?(User.find_by_mail('dlopper@somenet.foo'))
assert_equal 1, issue.watchers.size
assert_equal 1, issue.watcher_user_ids.size
end
def test_add_issue_by_unknown_user
+66
View File
@@ -398,6 +398,72 @@ class UserTest < ActiveSupport::TestCase
end
end
context "User#notify_about?" do
context "Issues" 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 "be true for a user with :all" do
@author.update_attribute(:mail_notification, :all)
assert @author.notify_about?(@issue)
end
should "be false for a user with :none" do
@author.update_attribute(:mail_notification, :none)
assert ! @author.notify_about?(@issue)
end
should "be false for a user with :only_my_events and isn't an author, creator, or assignee" do
@user = User.generate_with_protected!(:mail_notification => :only_my_events)
assert ! @user.notify_about?(@issue)
end
should "be true for a user with :only_my_events and is the author" do
@author.update_attribute(:mail_notification, :only_my_events)
assert @author.notify_about?(@issue)
end
should "be true for a user with :only_my_events and is the assignee" do
@assignee.update_attribute(:mail_notification, :only_my_events)
assert @assignee.notify_about?(@issue)
end
should "be true for a user with :only_assigned and is the assignee" do
@assignee.update_attribute(:mail_notification, :only_assigned)
assert @assignee.notify_about?(@issue)
end
should "be false for a user with :only_assigned and is not the assignee" do
@author.update_attribute(:mail_notification, :only_assigned)
assert ! @author.notify_about?(@issue)
end
should "be true for a user with :only_owner and is the author" do
@author.update_attribute(:mail_notification, :only_owner)
assert @author.notify_about?(@issue)
end
should "be false for a user with :only_owner and is not the author" do
@assignee.update_attribute(:mail_notification, :only_owner)
assert ! @assignee.notify_about?(@issue)
end
should "be false if the mail_notification is anything else" do
@assignee.update_attribute(:mail_notification, :somthing_else)
assert ! @assignee.notify_about?(@issue)
end
end
context "other events" do
should 'be added and tested'
end
end
if Object.const_defined?(:OpenID)
def test_setting_identity_url