diaspora/spec/models/message_spec.rb
2017-07-02 23:56:00 +02:00

53 lines
2.1 KiB
Ruby

# 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 Message, type: :model do
let(:create_hash) {
{
author: bob.person,
participant_ids: [bob.person.id, alice.person.id],
subject: "cool stuff",
messages_attributes: [{author: bob.person, text: "stuff"}]
}
}
let(:conversation) { Conversation.create!(create_hash) }
let(:message) { conversation.messages.first }
it "validates that the author is a participant in the conversation" do
message = Message.new(text: "yo", author: eve.person, conversation_id: conversation.id)
expect(message).not_to be_valid
end
describe "#subscribers" do
let(:cnv_hash) {
{
participant_ids: [local_luke.person, local_leia.person, remote_raphael].map(&:id),
subject: "cool story, bro",
messages_attributes: [{author: remote_raphael, text: "hey"}]
}
}
let(:local_conv) { Conversation.create(cnv_hash.merge(author: local_luke.person)) }
let(:remote_conv) { Conversation.create(cnv_hash.merge(author: remote_raphael)) }
it "returns all participants, if the conversation and the author is local" do
message = Message.create(author: local_luke.person, text: "yo", conversation: local_conv)
expect(message.subscribers).to match_array([local_luke.person, local_leia.person, remote_raphael])
end
it "returns all participants, if the author is local and the conversation is remote" do
message = Message.create(author: local_luke.person, text: "yo", conversation: remote_conv)
expect(message.subscribers).to match_array([local_luke.person, local_leia.person, remote_raphael])
end
end
describe "#increase_unread" do
it "increments the conversation visibility for the conversation" do
conf = ConversationVisibility.find_by(conversation_id: conversation.id, person_id: alice.person.id)
expect(conf.unread).to eq(0)
message.increase_unread(alice)
expect(conf.reload.unread).to eq(1)
end
end
end