added the email notification, the notification is not persisted, fixed the receive callback spec

This commit is contained in:
zhitomirskiyi 2011-03-08 17:42:37 -08:00
parent d38e3a6b29
commit c252cfa025
10 changed files with 28 additions and 7 deletions

View file

@ -65,7 +65,8 @@ class Conversation < ActiveRecord::Base
end end
self.messages.each do |msg| self.messages.each do |msg|
msg.conversation_id = cnv.id msg.conversation_id = cnv.id
msg.receive(user, person) received_msg = msg.receive(user, person)
Notification.notify(user, received_msg, person) if msg.respond_to?(:notification_type)
end end
end end
end end

View file

@ -7,9 +7,7 @@ module Job
class MailPrivateMessage < Base class MailPrivateMessage < Base
@queue = :mail @queue = :mail
def self.perform_delegate(recipient_id, actor_id, target_id) def self.perform_delegate(recipient_id, actor_id, target_id)
Notifier.private_message( recipient_id, actor_id, target_id).deliver Notifier.private_message( recipient_id, actor_id, target_id).deliver
end end
end end
end end

View file

@ -68,7 +68,7 @@ class Message < ActiveRecord::Base
end end
def notification_type(user, person) def notification_type(user, person)
Notifications::PrivateMessage Notifications::PrivateMessage unless user.person == person
end end
private private

View file

@ -3,12 +3,14 @@
%p %p
= "#{@sender.name} (#{@sender.diaspora_handle})" = "#{@sender.name} (#{@sender.diaspora_handle})"
= t('.private_message') = t('.private_message')
%p
= t('.message_subject', :subject => @conversation.subject)
%p %p
= @message.text = @message.text
%p %p
%br %br
= link_to t('.sign_in'), conversation_url(@cnv) = link_to t('.sign_in'), conversation_url(@conversation)
%br %br
= t('notifier.love') = t('notifier.love')

View file

@ -2,6 +2,7 @@
= "#{@sender.name} (#{@sender.diaspora_handle})" = "#{@sender.name} (#{@sender.diaspora_handle})"
= t('notifier.private_message.private_message') = t('notifier.private_message.private_message')
= t('notifier.private_message.message_subject', :subject => @conversation.subject)
= @message.text = @message.text
= "#{t('notifier.love')} \n" = "#{t('notifier.love')} \n"

View file

@ -493,6 +493,7 @@ en:
private_message: private_message:
subject: "%{name} has sent you a private message yon Diaspora*" subject: "%{name} has sent you a private message yon Diaspora*"
private_message: "has sent you a private message:" private_message: "has sent you a private message:"
message_subject: "Subject: %{subject}"
sign_in: "Sign in to view it." sign_in: "Sign in to view it."
home: home:
show: show:

View file

@ -120,7 +120,7 @@ describe Notifier do
@cnv = Conversation.create(@create_hash) @cnv = Conversation.create(@create_hash)
@mail = Notifier.private_message(user.id, @cnv.author.id, @cnv.id) @mail = Notifier.private_message(user.id, @cnv.author.id, @cnv.messages.first.id)
end end
it 'goes to the right person' do it 'goes to the right person' do
@mail.to.should == [user.email] @mail.to.should == [user.email]
@ -134,6 +134,10 @@ describe Notifier do
@mail.body.encoded.include?(@cnv.author.name).should be true @mail.body.encoded.include?(@cnv.author.name).should be true
end end
it 'has the conversation subject in the body' do
@mail.body.encoded.should include(@cnv.subject)
end
it 'has the post text in the body' do it 'has the post text in the body' do
@mail.body.encoded.should include(@cnv.messages.first.text) @mail.body.encoded.should include(@cnv.messages.first.text)
end end

View file

@ -83,6 +83,10 @@ describe Conversation do
it 'does not save before receive' do it 'does not save before receive' do
Diaspora::Parser.from_xml(@xml).persisted?.should be_false Diaspora::Parser.from_xml(@xml).persisted?.should be_false
end end
it 'notifies for the message' do
Notification.should_receive(:notify).once
Diaspora::Parser.from_xml(@xml).receive(@user1, @user2.person)
end
end end
end end
end end

View file

@ -20,7 +20,16 @@ describe Message do
it 'validates that the author is a participant in the conversation' do it 'validates that the author is a participant in the conversation' do
msg = Message.new(:text => 'yo', :author => eve.person, :conversation_id => @cnv.id) msg = Message.new(:text => 'yo', :author => eve.person, :conversation_id => @cnv.id)
pp msg.valid? end
describe '#notification_type' do
it 'does not return anything for the author' do
@message.notification_type(@user1, @user1.person).should be_nil
end
it 'returns private mesage for an actual receiver' do
@message.notification_type(@user2, @user1.person).should == Notifications::PrivateMessage
end
end end
describe '#before_create' do describe '#before_create' do

View file

@ -68,6 +68,7 @@ describe Diaspora::Relayable do
it 'calls after_receive callback' do it 'calls after_receive callback' do
@object_by_recipient.should_receive(:after_receive) @object_by_recipient.should_receive(:after_receive)
@object_by_recipient.class.stub(:where).and_return([@object_by_recipient])
@object_by_recipient.receive(@local_luke, @local_leia.person) @object_by_recipient.receive(@local_luke, @local_leia.person)
end end
end end