create a new notifciation if previous was read, only concatinate when it is the same unread message
This commit is contained in:
parent
c41acbabd6
commit
c20cd5381e
2 changed files with 13 additions and 11 deletions
|
|
@ -41,7 +41,8 @@ private
|
||||||
def self.concatenate_or_create(recipient, target, actor, notification_type)
|
def self.concatenate_or_create(recipient, target, actor, notification_type)
|
||||||
if n = notification_type.where(:target_id => target.id,
|
if n = notification_type.where(:target_id => target.id,
|
||||||
:target_type => target.class.base_class,
|
:target_type => target.class.base_class,
|
||||||
:recipient_id => recipient.id).first
|
:recipient_id => recipient.id,
|
||||||
|
:unread => true).first
|
||||||
unless n.actors.include?(actor)
|
unless n.actors.include?(actor)
|
||||||
n.actors << actor
|
n.actors << actor
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,12 @@ describe Notification do
|
||||||
@user2 = eve
|
@user2 = eve
|
||||||
@aspect = @user.aspects.create(:name => "dudes")
|
@aspect = @user.aspects.create(:name => "dudes")
|
||||||
@opts = {:target_id => @sm.id,
|
@opts = {:target_id => @sm.id,
|
||||||
:target_type => @sm.class.name,
|
:target_type => @sm.class.base_class.to_s,
|
||||||
:type => 'Notifications::CommentOnPost',
|
:type => 'Notifications::CommentOnPost',
|
||||||
:actors => [@person],
|
:actors => [@person],
|
||||||
:recipient_id => @user.id}
|
:recipient_id => @user.id}
|
||||||
@note = Notification.new(@opts)
|
@note = Notification.new(@opts)
|
||||||
|
@note.type = 'Notifications::CommentOnPost'
|
||||||
@note.actors =[ @person]
|
@note.actors =[ @person]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -39,6 +40,15 @@ describe Notification do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '.concatenate_or_create' do
|
||||||
|
it 'creates a new notificiation if the notification does not exist, or if it is unread' do
|
||||||
|
@note.unread = false
|
||||||
|
@note.save
|
||||||
|
Notification.count.should == 1
|
||||||
|
Notification.concatenate_or_create(@note.recipient, @note.target, @note.actors.first, Notifications::CommentOnPost)
|
||||||
|
Notification.count.should == 2
|
||||||
|
end
|
||||||
|
end
|
||||||
describe '.notify' do
|
describe '.notify' do
|
||||||
it 'does not call Notification.create if the object does not have a notification_type' do
|
it 'does not call Notification.create if the object does not have a notification_type' do
|
||||||
Notification.should_not_receive(:make_notificatin)
|
Notification.should_not_receive(:make_notificatin)
|
||||||
|
|
@ -104,15 +114,6 @@ describe Notification do
|
||||||
Notification.where(:recipient_id => @user3.id, :target_type => @sm.class.base_class, :target_id => @sm.id).first.actors.count.should == 2
|
Notification.where(:recipient_id => @user3.id, :target_type => @sm.class.base_class, :target_id => @sm.id).first.actors.count.should == 2
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'marks the notification as unread' do
|
|
||||||
note = Notification.where(:recipient_id => @user3.id,:target_type => @sm.class.base_class, :target_id => @sm.id).first
|
|
||||||
note.unread = false
|
|
||||||
note.save
|
|
||||||
lambda {
|
|
||||||
Postzord::Receiver.new(@user3, :person => @user2.person, :object => @user2.comment("hey", :on => @sm)).receive_object
|
|
||||||
note.reload
|
|
||||||
}.should change(note, :unread).from(false).to(true)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue