mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-12-27 04:51:14 +00:00
57 lines
1.3 KiB
Ruby
57 lines
1.3 KiB
Ruby
|
# == Schema Information
|
||
|
#
|
||
|
# Table name: messages
|
||
|
#
|
||
|
# id :integer not null, primary key
|
||
|
# sender_type :string(255)
|
||
|
# sender_id :integer
|
||
|
# recipient_type :string(255)
|
||
|
# recipient_id :integer
|
||
|
# title :string(255)
|
||
|
# text :text
|
||
|
# created_at :datetime
|
||
|
# updated_at :datetime
|
||
|
# text_parsed :text
|
||
|
#
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe Message do
|
||
|
let!(:user) { create :user }
|
||
|
|
||
|
describe 'create' do
|
||
|
let(:message) { build :message }
|
||
|
it 'creates a new message' do
|
||
|
expect(message.valid?).to be_true
|
||
|
expect do
|
||
|
message.save!
|
||
|
end.to change(Message, :count).by(1)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'Permissions' do
|
||
|
let(:message) { Message.new }
|
||
|
describe 'can_create?' do
|
||
|
it 'returns true for user' do
|
||
|
expect(message.can_create?(user)).to be_true
|
||
|
end
|
||
|
it 'returns false if user is banned' do
|
||
|
create :ban, :mute, user: user
|
||
|
expect(message.can_create?(user)).to be_false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'can_show?' do
|
||
|
let!(:message) { create :message }
|
||
|
it 'returns true if sender' do
|
||
|
expect(message.can_show?(message.sender)).to be_true
|
||
|
end
|
||
|
it 'returns true if receiver' do
|
||
|
expect(message.can_show?(message.recipient)).to be_true
|
||
|
end
|
||
|
it 'returns false if neither sender nor receiver' do
|
||
|
expect(message.can_show?(user)).to be_false
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|