Files
nairobi/spec/models/poll/booth_spec.rb
Javi Martín 320b7550ed Simplify assigning poll to a booth in specs
We were creating booth assignments explicitely, but we can use the
`has_many :through` relationship to make the code easier to read.
2019-09-25 12:38:37 +02:00

44 lines
1.3 KiB
Ruby

require "rails_helper"
describe Poll::Booth do
let(:booth) { build(:poll_booth) }
it "is valid" do
expect(booth).to be_valid
end
it "is not valid without a name" do
booth.name = nil
expect(booth).not_to be_valid
end
describe "#search" do
it "finds booths searching by name or location" do
booth1 = create(:poll_booth, name: "Booth number 1", location: "City center")
booth2 = create(:poll_booth, name: "Central", location: "Town hall")
expect(Poll::Booth.search("number")).to eq([booth1])
expect(Poll::Booth.search("hall")).to eq([booth2])
expect(Poll::Booth.search("cen")).to match_array [booth1, booth2]
end
end
describe ".available" do
it "returns booths associated to current polls" do
booth_for_current_poll = create(:poll_booth, polls: [create(:poll, :current)])
booth_for_expired_poll = create(:poll_booth, polls: [create(:poll, :expired)])
expect(Poll::Booth.available).to include(booth_for_current_poll)
expect(Poll::Booth.available).not_to include(booth_for_expired_poll)
end
it "returns polls with multiple translations only once" do
create(:poll_booth, polls: [create(:poll, :current, name: "English", name_es: "Spanish")])
expect(Poll::Booth.available.count).to eq 1
end
end
end