Files
grecia/spec/models/proposal_notification_spec.rb
2016-12-29 10:58:40 +01:00

76 lines
2.0 KiB
Ruby

require 'rails_helper'
describe ProposalNotification do
let(:notification) { build(:proposal_notification) }
it "should be valid" do
expect(notification).to be_valid
end
it "should not be valid without a title" do
notification.title = nil
expect(notification).to_not be_valid
end
it "should not be valid without a body" do
notification.body = nil
expect(notification).to_not be_valid
end
it "should not be valid without an associated proposal" do
notification.proposal = nil
expect(notification).to_not be_valid
end
describe "public_for_api scope" do
it "returns proposal notifications" do
proposal = create(:proposal)
notification = create(:proposal_notification, proposal: proposal)
expect(ProposalNotification.public_for_api).to include(notification)
end
it "blocks notifications whose proposal is hidden" do
proposal = create(:proposal, :hidden)
notification = create(:proposal_notification, proposal: proposal)
expect(ProposalNotification.public_for_api).not_to include(notification)
end
end
describe "minimum interval between notifications" do
before(:each) do
Setting[:proposal_notification_minimum_interval_in_days] = 3
end
it "should not be valid if below minium interval" do
proposal = create(:proposal)
notification1 = create(:proposal_notification, proposal: proposal)
notification2 = build(:proposal_notification, proposal: proposal)
proposal.reload
expect(notification2).to_not be_valid
end
it "should be valid if notifications above minium interval" do
proposal = create(:proposal)
notification1 = create(:proposal_notification, proposal: proposal, created_at: 4.days.ago)
notification2 = build(:proposal_notification, proposal: proposal)
proposal.reload
expect(notification2).to be_valid
end
it "should be valid if no notifications sent" do
notification1 = build(:proposal_notification)
expect(notification1).to be_valid
end
end
end