67 lines
1.9 KiB
Ruby
67 lines
1.9 KiB
Ruby
|
require 'rails_helper'
|
||
|
|
||
|
RSpec.describe EmailAddress, type: :model do
|
||
|
subject(:email_address) { create(:email_address) }
|
||
|
|
||
|
describe 'Attributes:' do
|
||
|
describe '#active' do
|
||
|
subject(:email_address) do
|
||
|
create(:email_address, channel: channel, active: active)
|
||
|
end
|
||
|
|
||
|
context 'without a Channel association' do
|
||
|
let(:channel) { nil }
|
||
|
let(:active) { true }
|
||
|
|
||
|
it 'always returns false' do
|
||
|
expect(email_address.active).not_to eq(active)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'with a Channel association' do
|
||
|
let(:channel) { create(:email_channel) }
|
||
|
let(:active) { true }
|
||
|
|
||
|
it 'returns the value it was set to' do
|
||
|
expect(email_address.active).to eq(active)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'Associations:' do
|
||
|
describe '#groups' do
|
||
|
let(:group) { create(:group, email_address: email_address) }
|
||
|
|
||
|
context 'when an EmailAddress is destroyed' do
|
||
|
it 'removes the #email_address_id from all associated Groups' do
|
||
|
expect { email_address.destroy }
|
||
|
.to change { group.reload.email_address_id }.to(nil)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#channel' do
|
||
|
subject(:email_addresses) { create_list(:email_address, 2, channel: channel) }
|
||
|
let(:channel) { create(:channel) }
|
||
|
|
||
|
context 'when a Channel is destroyed' do
|
||
|
it 'removes the #channel_id from all its associated EmailAddresses' do
|
||
|
expect { channel.destroy }
|
||
|
.to change { email_addresses.map(&:reload).map(&:channel_id) }
|
||
|
.to([nil, nil])
|
||
|
end
|
||
|
|
||
|
context 'and then an identical Channel is created' do
|
||
|
it 'removes the #channel_id from all its associated EmailAddresses' do
|
||
|
channel.destroy
|
||
|
|
||
|
expect { create(:channel) }
|
||
|
.not_to change { email_addresses.map(&:reload).map(&:channel_id) }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|