72 lines
2.6 KiB
Ruby
72 lines
2.6 KiB
Ruby
describe Notifications::MentionedInPost, type: :model do
|
|
let(:sm) {
|
|
FactoryGirl.create(:status_message, author: alice.person, text: "hi @{bob; #{bob.diaspora_handle}}", public: true)
|
|
}
|
|
let(:mentioned_notification) { Notifications::MentionedInPost.new(recipient: bob) }
|
|
|
|
describe ".notify" do
|
|
it "calls create_notification with mention" do
|
|
expect(Notifications::MentionedInPost).to receive(:create_notification).with(
|
|
bob, sm.mentions.first, sm.author
|
|
).and_return(mentioned_notification)
|
|
|
|
Notifications::MentionedInPost.notify(sm, [])
|
|
end
|
|
|
|
it "sends an email to the mentioned person" do
|
|
allow(Notifications::MentionedInPost).to receive(:create_notification).and_return(mentioned_notification)
|
|
expect(bob).to receive(:mail).with(Workers::Mail::Mentioned, bob.id, sm.author.id, sm.mentions.first.id)
|
|
|
|
Notifications::MentionedInPost.notify(sm, [])
|
|
end
|
|
|
|
it "does nothing if the mentioned person is not local" do
|
|
sm = FactoryGirl.create(
|
|
:status_message,
|
|
author: alice.person,
|
|
text: "hi @{raphael; #{remote_raphael.diaspora_handle}}",
|
|
public: true
|
|
)
|
|
expect(Notifications::MentionedInPost).not_to receive(:create_notification)
|
|
|
|
Notifications::MentionedInPost.notify(sm, [])
|
|
end
|
|
|
|
it "does not notify if the author of the post is ignored" do
|
|
bob.blocks.create(person: sm.author)
|
|
|
|
expect_any_instance_of(Notifications::MentionedInPost).not_to receive(:email_the_user)
|
|
|
|
Notifications::MentionedInPost.notify(sm, [])
|
|
|
|
expect(Notifications::MentionedInPost.where(target: sm.mentions.first)).not_to exist
|
|
end
|
|
|
|
context "with private post" do
|
|
let(:private_sm) {
|
|
FactoryGirl.create(
|
|
:status_message,
|
|
author: remote_raphael,
|
|
text: "hi @{bob; #{bob.diaspora_handle}}",
|
|
public: false
|
|
).tap {|private_sm|
|
|
private_sm.receive([bob.id, alice.id])
|
|
}
|
|
}
|
|
|
|
it "calls create_notification if the mentioned person is a recipient of the post" do
|
|
expect(Notifications::MentionedInPost).to receive(:create_notification).with(
|
|
bob, private_sm.mentions.first, private_sm.author
|
|
).and_return(mentioned_notification)
|
|
|
|
Notifications::MentionedInPost.notify(private_sm, [bob.id])
|
|
end
|
|
|
|
it "does not call create_notification if the mentioned person is not a recipient of the post" do
|
|
expect(Notifications::MentionedInPost).not_to receive(:create_notification)
|
|
|
|
Notifications::MentionedInPost.notify(private_sm, [alice.id])
|
|
end
|
|
end
|
|
end
|
|
end
|