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.
101 lines
3.4 KiB
101 lines
3.4 KiB
9 years ago
|
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) { FactoryGirl.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) { FactoryGirl.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) {
|
||
|
FactoryGirl.create(:active_announcement, show_until: Date.today + 14.days)
|
||
|
}
|
||
|
|
||
|
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) {
|
||
|
FactoryGirl.create(:active_announcement, show_until: Date.today - 14.days)
|
||
|
}
|
||
|
|
||
|
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) {
|
||
|
FactoryGirl.create(:active_announcement, show_until: Date.today)
|
||
|
}
|
||
|
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) { FactoryGirl.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) {
|
||
|
FactoryGirl.build(:active_announcement, show_until: Date.today + 14.days)
|
||
|
}
|
||
|
|
||
|
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) {
|
||
|
FactoryGirl.create(:active_announcement, show_until: Date.today - 14.days)
|
||
|
}
|
||
|
|
||
|
it { expect(announcement.active_and_current?).to be_falsey }
|
||
|
end
|
||
|
|
||
|
describe 'WHEN the announcement is active and today equals show_until' do
|
||
|
let!(:announcement) {
|
||
|
FactoryGirl.build(:active_announcement, show_until: Date.today)
|
||
|
}
|
||
|
|
||
|
it { expect(announcement.active_and_current?).to be_truthy }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|