docbrown/spec/models/broadcast_spec.rb
Julianna Tetreault 7af4ee034f
Enforce Uniqueness for Broadcast Titles (#8239) [deploy]
* Add uniqueness validation to broadcast titles in broadcast.rb

* WIP: properly test title uniqueness in broadcast_spec.rb

* Add unique index for title and type_of on Broadcasts
  * Adds a unique index to the Broadcasts table
  * Adds broadcast.rb to .rubocop_todo.yml

* Resolve merge conflicts

* Add spec around duplicate broadcasts in broadcasts_spec.rb

* Adjust broadcast to be inactive in broadcasts_spec.rb
2020-06-02 15:43:59 -06:00

20 lines
814 B
Ruby

require "rails_helper"
RSpec.describe Broadcast, type: :model do
it { is_expected.to validate_presence_of(:title) }
it { is_expected.to validate_presence_of(:type_of) }
it { is_expected.to validate_presence_of(:processed_html) }
it { is_expected.to validate_inclusion_of(:type_of).in_array(%w[Announcement Welcome]) }
it { is_expected.to validate_uniqueness_of(:title).scoped_to(:type_of) }
it { is_expected.to have_many(:notifications) }
it "validates that only one Broadcast with a type_of Announcement can be active" do
create(:announcement_broadcast)
inactive_broadcast = build(:announcement_broadcast)
expect(inactive_broadcast).not_to be_valid
expect(inactive_broadcast.errors.full_messages.join).to include("You can only have one active announcement broadcast")
end
end