# == 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