spec/models/admin_notification_spec.rb
require 'rails_helper'
describe AdminNotification do
let(:admin_notification) { build(:admin_notification) }
it_behaves_like "globalizable", :admin_notification
it "is valid" do
expect(admin_notification).to be_valid
end
it 'is not valid without a title' do
admin_notification.title = nil
expect(admin_notification).not_to be_valid
end
it 'is not valid without a body' do
admin_notification.body = nil
expect(admin_notification).not_to be_valid
end
it 'is not valid without a segment_recipient' do
admin_notification.segment_recipient = nil
expect(admin_notification).not_to be_valid
end
describe '#complete_link_url' do
it 'does not change link if there is no value' do
expect(admin_notification.link).to be_nil
end
it 'fixes a link without http://' do
admin_notification.link = 'lol.consul.dev'
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq('http://lol.consul.dev')
end
it 'fixes a link with wwww. but without http://' do
admin_notification.link = 'www.lol.consul.dev'
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq('http://www.lol.consul.dev')
end
it 'does not modify a link with http://' do
admin_notification.link = 'http://lol.consul.dev'
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq('http://lol.consul.dev')
end
it 'does not modify a link with https://' do
admin_notification.link = 'https://lol.consul.dev'
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq('https://lol.consul.dev')
end
it 'does not modify a link with http://wwww.' do
admin_notification.link = 'http://www.lol.consul.dev'
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq('http://www.lol.consul.dev')
end
end
describe '#valid_segment_recipient?' do
it 'is false when segment_recipient value is invalid' do
admin_notification.update(segment_recipient: 'invalid_segment_name')
error = 'The user recipients segment is invalid'
expect(admin_notification).not_to be_valid
expect(admin_notification.errors.messages[:segment_recipient]).to include(error)
end
end
describe '#list_of_recipients' do
let(:erased_user) { create(:user, username: 'erased_user') }
before do
2.times { create(:user) }
erased_user.erase
admin_notification.update(segment_recipient: 'all_users')
end
it 'returns list of all active users' do
expect(admin_notification.list_of_recipients.count).to eq(2)
expect(admin_notification.list_of_recipients).not_to include(erased_user)
end
end
end