67 lines
2.3 KiB
Ruby
67 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
describe Notifications::AlsoCommented, type: :model do
|
|
let(:sm) { FactoryGirl.build(:status_message, author: alice.person, public: true) }
|
|
let(:comment) { FactoryGirl.create(:comment, commentable: sm) }
|
|
let(:notification) { Notifications::AlsoCommented.new(recipient: bob) }
|
|
|
|
describe ".notify" do
|
|
it "does not notify the commentable author" do
|
|
expect(Notifications::AlsoCommented).not_to receive(:concatenate_or_create)
|
|
|
|
Notifications::AlsoCommented.notify(comment, [])
|
|
end
|
|
|
|
it "notifies a local participant" do
|
|
bob.participate!(sm)
|
|
|
|
expect(Notifications::AlsoCommented).to receive(:concatenate_or_create).with(
|
|
bob, sm, comment.author
|
|
).and_return(notification)
|
|
expect(bob).to receive(:mail).with(Workers::Mail::AlsoCommented, bob.id, comment.author.id, comment.id)
|
|
|
|
Notifications::AlsoCommented.notify(comment, [])
|
|
end
|
|
|
|
it "does not notify the a remote participant" do
|
|
FactoryGirl.create(:participation, target: sm)
|
|
|
|
expect(Notifications::AlsoCommented).not_to receive(:concatenate_or_create)
|
|
|
|
Notifications::AlsoCommented.notify(comment, [])
|
|
end
|
|
|
|
it "does not notify the author of the comment" do
|
|
bob.participate!(sm)
|
|
comment = FactoryGirl.create(:comment, commentable: sm, author: bob.person)
|
|
|
|
expect(Notifications::AlsoCommented).not_to receive(:concatenate_or_create)
|
|
|
|
Notifications::AlsoCommented.notify(comment, [])
|
|
end
|
|
|
|
it "does not notify if the commentable is hidden" do
|
|
bob.participate!(sm)
|
|
bob.add_hidden_shareable(sm.class.base_class.to_s, sm.id.to_s)
|
|
|
|
expect(Notifications::AlsoCommented).not_to receive(:concatenate_or_create)
|
|
|
|
Notifications::AlsoCommented.notify(comment, [])
|
|
end
|
|
|
|
it "does not notify if the author of the comment is ignored" do
|
|
bob.participate!(sm)
|
|
bob.blocks.create(person: comment.author)
|
|
|
|
expect_any_instance_of(Notifications::AlsoCommented).not_to receive(:email_the_user)
|
|
|
|
Notifications::AlsoCommented.notify(comment, [])
|
|
|
|
expect(Notifications::AlsoCommented.where(target: sm)).not_to exist
|
|
end
|
|
end
|
|
end
|