kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.4 KiB
100 lines
3.4 KiB
require 'spec_helper'
|
|
|
|
describe Announcement, type: :model do
|
|
it do is_expected.to respond_to :text end
|
|
it do is_expected.to respond_to :text= end
|
|
it do is_expected.to respond_to :show_until end
|
|
it do is_expected.to respond_to :show_until= end
|
|
it do is_expected.to respond_to :active? end
|
|
it do is_expected.to respond_to :active= end
|
|
|
|
describe 'class methods' do
|
|
describe '#only_one' do
|
|
context 'WHEN no announcement exists' do
|
|
it do expect(Announcement.only_one.text).to eql 'Announcement' end
|
|
it do expect(Announcement.only_one.show_until).to eql(Date.today + 14.days) end
|
|
it { expect(Announcement.only_one.active).to eql false }
|
|
end
|
|
|
|
context 'WHEN an announcement exists' do
|
|
let!(:announcement) { FactoryBot.create :announcement }
|
|
it 'returns the true one announcement' do
|
|
expect(Announcement.only_one).to eql announcement
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#active_and_current' do
|
|
describe 'WHEN no announcement is active' do
|
|
let!(:announcement) { FactoryBot.create(:inactive_announcement) }
|
|
|
|
it 'returns no announcement' do
|
|
expect(Announcement.active_and_current).to be_nil
|
|
end
|
|
end
|
|
|
|
describe 'WHEN the one announcement is active and today is before show_until' do
|
|
let!(:announcement) do
|
|
FactoryBot.create(:active_announcement, show_until: Date.today + 14.days)
|
|
end
|
|
|
|
it 'returns that announcement' do
|
|
expect(Announcement.active_and_current).to eql announcement
|
|
end
|
|
end
|
|
|
|
describe 'WHEN the one announcement is active and today is after show_until' do
|
|
let!(:announcement) do
|
|
FactoryBot.create(:active_announcement, show_until: Date.today - 14.days)
|
|
end
|
|
|
|
it 'returns no announcement' do
|
|
expect(Announcement.active_and_current).to be_nil
|
|
end
|
|
end
|
|
|
|
describe 'WHEN the one announcement is active and today equals show_until' do
|
|
let!(:announcement) do
|
|
FactoryBot.create(:active_announcement, show_until: Date.today)
|
|
end
|
|
it 'returns that announcement' do
|
|
expect(Announcement.active_and_current).to eql announcement
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'instance methods' do
|
|
describe '#active_and_current?' do
|
|
describe 'WHEN the announcement is not active' do
|
|
let(:announcement) { FactoryBot.build(:inactive_announcement) }
|
|
|
|
it { expect(announcement.active_and_current?).to be_falsey }
|
|
end
|
|
|
|
describe 'WHEN the announcement is active and today is before show_until' do
|
|
let(:announcement) do
|
|
FactoryBot.build(:active_announcement, show_until: Date.today + 14.days)
|
|
end
|
|
|
|
it { expect(announcement.active_and_current?).to be_truthy }
|
|
end
|
|
|
|
describe 'WHEN the announcement is active and today is after show_until' do
|
|
let!(:announcement) do
|
|
FactoryBot.create(:active_announcement, show_until: Date.today - 14.days)
|
|
end
|
|
|
|
it { expect(announcement.active_and_current?).to be_falsey }
|
|
end
|
|
|
|
describe 'WHEN the announcement is active and today equals show_until' do
|
|
let!(:announcement) do
|
|
FactoryBot.build(:active_announcement, show_until: Date.today)
|
|
end
|
|
|
|
it { expect(announcement.active_and_current?).to be_truthy }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|