diff --git a/app/models/mailer.rb b/app/models/mailer.rb index 1962ae14..e58c88ed 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -185,7 +185,7 @@ class Mailer < ActionMailer::Base 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}" 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) end diff --git a/app/models/message_observer.rb b/app/models/message_observer.rb index be7c4968..f4605858 100644 --- a/app/models/message_observer.rb +++ b/app/models/message_observer.rb @@ -12,10 +12,7 @@ #++ class MessageObserver < ActiveRecord::Observer - def after_save(message) - if message.last_journal.version == 1 - # Only deliver mails for the first journal - Mailer.deliver_message_posted(message) if Setting.notified_events.include?('message_posted') - end + def after_create(message) + Mailer.deliver_message_posted(message) if Setting.notified_events.include?('message_posted') end end diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb index 596a1c5f..6f6b9bbc 100644 --- a/test/unit/mailer_test.rb +++ b/test/unit/mailer_test.rb @@ -179,7 +179,7 @@ class MailerTest < ActiveSupport::TestCase assert_nil mail.references assert_select_email do # 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 diff --git a/test/unit/message_test.rb b/test/unit/message_test.rb index 9f143825..6203b6a1 100644 --- a/test/unit/message_test.rb +++ b/test/unit/message_test.rb @@ -16,6 +16,7 @@ class MessageTest < ActiveSupport::TestCase fixtures :projects, :roles, :members, :member_roles, :boards, :messages, :users, :watchers def setup + Setting.notified_events = ['message_posted'] @board = Board.find(1) @user = User.find(1) end @@ -138,4 +139,12 @@ class MessageTest < ActiveSupport::TestCase message.sticky = '1' assert_equal 1, message.sticky 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