[#514] Fix forum notifications, only one email per created Message
This commit is contained in:
parent
1bfe6715c6
commit
4a3e32b0f4
@ -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 @@
|
|||||||
#++
|
#++
|
||||||
|
|
||||||
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
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user