Commit 4a3e32b0 authored by Eric Davis's avatar Eric Davis

[#514] Fix forum notifications, only one email per created Message

parent 1bfe6715
...@@ -185,7 +185,7 @@ class Mailer < ActionMailer::Base ...@@ -185,7 +185,7 @@ class Mailer < ActionMailer::Base
cc((message.root.watcher_recipients + message.board.watcher_recipients).uniq - @recipients) cc((message.root.watcher_recipients + message.board.watcher_recipients).uniq - @recipients)
subject "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}" subject "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}"
body :message => message, body :message => message,
:message_url => url_for(message.last_journal.event_url) :message_url => url_for({ :controller => 'messages', :action => 'show', :board_id => message.board, :id => message.root, :r => message, :anchor => "message-#{message.id}" })
render_multipart('message_posted', body) render_multipart('message_posted', body)
end end
......
...@@ -12,10 +12,7 @@ ...@@ -12,10 +12,7 @@
#++ #++
class MessageObserver < ActiveRecord::Observer class MessageObserver < ActiveRecord::Observer
def after_save(message) def after_create(message)
if message.last_journal.version == 1 Mailer.deliver_message_posted(message) if Setting.notified_events.include?('message_posted')
# Only deliver mails for the first journal
Mailer.deliver_message_posted(message) if Setting.notified_events.include?('message_posted')
end
end end
end end
...@@ -179,7 +179,7 @@ class MailerTest < ActiveSupport::TestCase ...@@ -179,7 +179,7 @@ class MailerTest < ActiveSupport::TestCase
assert_nil mail.references assert_nil mail.references
assert_select_email do assert_select_email do
# link to the message # link to the message
assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject assert_select "a[href*=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
end end
end end
......
...@@ -16,6 +16,7 @@ class MessageTest < ActiveSupport::TestCase ...@@ -16,6 +16,7 @@ class MessageTest < ActiveSupport::TestCase
fixtures :projects, :roles, :members, :member_roles, :boards, :messages, :users, :watchers fixtures :projects, :roles, :members, :member_roles, :boards, :messages, :users, :watchers
def setup def setup
Setting.notified_events = ['message_posted']
@board = Board.find(1) @board = Board.find(1)
@user = User.find(1) @user = User.find(1)
end end
...@@ -138,4 +139,12 @@ class MessageTest < ActiveSupport::TestCase ...@@ -138,4 +139,12 @@ class MessageTest < ActiveSupport::TestCase
message.sticky = '1' message.sticky = '1'
assert_equal 1, message.sticky assert_equal 1, message.sticky
end end
test "email notifications for creating a message" do
assert_difference("ActionMailer::Base.deliveries.count") do
message = Message.new(:board => @board, :subject => 'Test message', :content => 'Test message content', :author => @user)
assert message.save
end
end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment