47 lines
1.5 KiB
Ruby
47 lines
1.5 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe :voter do
|
|
|
|
let(:poll) { create(:poll) }
|
|
let(:booth) { create(:poll_booth, poll: poll) }
|
|
|
|
describe "validations" do
|
|
|
|
it "should be valid if in census and has not voted" do
|
|
voter = build(:poll_voter, :valid_document, booth: booth)
|
|
|
|
expect(voter).to be_valid
|
|
end
|
|
|
|
it "should not be valid if the user is not in the census" do
|
|
voter = build(:poll_voter, :invalid_document, booth: booth)
|
|
|
|
expect(voter).to_not be_valid
|
|
expect(voter.errors.messages[:document_number]).to eq(["Document not in census"])
|
|
end
|
|
|
|
it "should not be valid if the user has already voted in the same booth" do
|
|
voter1 = create(:poll_voter, :valid_document, booth: booth)
|
|
voter2 = build(:poll_voter, :valid_document, booth: booth)
|
|
|
|
expect(voter2).to_not be_valid
|
|
expect(voter2.errors.messages[:document_number]).to eq(["José García has already voted"])
|
|
end
|
|
|
|
it "should not be valid if the user has already voted in another booth" do
|
|
booth1 = create(:poll_booth, poll: poll)
|
|
booth2 = create(:poll_booth, poll: poll)
|
|
|
|
voter1 = create(:poll_voter, :valid_document, booth: booth1)
|
|
voter2 = build(:poll_voter, :valid_document, booth: booth2)
|
|
|
|
expect(voter2).to_not be_valid
|
|
expect(voter2.errors.messages[:document_number]).to eq(["José García has already voted"])
|
|
end
|
|
|
|
xit "should not be valid if the user has voted via web" do
|
|
pending "Implementation for voting via web"
|
|
end
|
|
|
|
end
|
|
end |