Feature/add inbox specs (#192)

* Add base Inbox association and validation specs

* `#facebook?``

* `#add_member` and `#remove_member`

* cleanup

* Rubocop

* Rubocop but again

really this time
This commit is contained in:
Lauren
2019-10-30 01:19:23 -04:00
committed by Sojan Jose
parent 3d3aefb197
commit bfa4121f41
2 changed files with 75 additions and 0 deletions

73
spec/models/inbox_spec.rb Normal file
View File

@@ -0,0 +1,73 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Inbox do
describe 'validations' do
it { is_expected.to validate_presence_of(:account_id) }
end
describe 'associations' do
it { is_expected.to belong_to(:account) }
it { is_expected.to belong_to(:channel) }
it { is_expected.to have_many(:contact_inboxes).dependent(:destroy) }
it { is_expected.to have_many(:contacts).through(:contact_inboxes) }
it { is_expected.to have_many(:inbox_members).dependent(:destroy) }
it { is_expected.to have_many(:members).through(:inbox_members).source(:user) }
it { is_expected.to have_many(:conversations).dependent(:destroy) }
it { is_expected.to have_many(:messages).through(:conversations) }
end
describe '#add_member' do
let(:inbox) { FactoryBot.create(:inbox) }
let(:user) { FactoryBot.create(:user) }
it do
expect(inbox.inbox_members.size).to eq(0)
inbox.add_member(user.id)
expect(inbox.reload.inbox_members.size).to eq(1)
end
end
describe '#remove_member' do
let(:inbox) { FactoryBot.create(:inbox) }
let(:user) { FactoryBot.create(:user) }
before { inbox.add_member(user.id) }
it do
expect(inbox.inbox_members.size).to eq(1)
inbox.remove_member(user.id)
expect(inbox.reload.inbox_members.size).to eq(0)
end
end
describe '#facebook?' do
let(:inbox) do
FactoryBot.build(:inbox, channel: channel_val)
end
context 'when the channel type is Channel::FacebookPage' do
let(:channel_val) { Channel::FacebookPage.new }
it do
expect(inbox.facebook?).to eq(true)
end
end
context 'when the channel type is not Channel::FacebookPage' do
let(:channel_val) { Channel::WebWidget.new }
it { expect(inbox.facebook?).to eq(false) }
end
end
end