We were very inconsistent regarding these rules. Personally I prefer no empty lines around blocks, clases, etc... as recommended by the Ruby style guide [1], and they're the default values in rubocop, so those are the settings I'm applying. The exception is the `private` access modifier, since we were leaving empty lines around it most of the time. That's the default rubocop rule as well. Personally I don't have a strong preference about this one. [1] https://rubystyle.guide/#empty-lines-around-bodies
57 lines
1.4 KiB
Ruby
57 lines
1.4 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Poll::BallotSheet do
|
|
let(:ballot_sheet) do
|
|
build(:poll_ballot_sheet, poll: create(:poll),
|
|
officer_assignment: create(:poll_officer_assignment),
|
|
data: "1234;5678")
|
|
end
|
|
|
|
context "Validations" do
|
|
it "is valid" do
|
|
expect(ballot_sheet).to be_valid
|
|
end
|
|
|
|
it "is not valid without a poll" do
|
|
ballot_sheet.poll = nil
|
|
expect(ballot_sheet).not_to be_valid
|
|
end
|
|
|
|
it "is not valid without an officer assignment" do
|
|
ballot_sheet.officer_assignment = nil
|
|
expect(ballot_sheet).not_to be_valid
|
|
end
|
|
|
|
it "is not valid without data" do
|
|
ballot_sheet.data = nil
|
|
expect(ballot_sheet).not_to be_valid
|
|
end
|
|
end
|
|
|
|
context "#author" do
|
|
it "returns the officer's name" do
|
|
expect(ballot_sheet.author).to be(ballot_sheet.officer_assignment.officer.user.name)
|
|
end
|
|
end
|
|
|
|
describe "#verify_ballots" do
|
|
it "creates ballots for each document number" do
|
|
poll = create(:poll, :for_budget)
|
|
poll_ballot = create(:poll_ballot_sheet, poll: poll, data: "1,2,3;4,5,6")
|
|
poll_ballot.verify_ballots
|
|
|
|
expect(Poll::Ballot.count).to eq(2)
|
|
expect(Budget::Ballot.count).to eq(2)
|
|
end
|
|
end
|
|
|
|
describe "#parsed_ballots" do
|
|
it "splits ballots by ';' or '\n'" do
|
|
data = "1,2,3;4,5,6\n7,8,9"
|
|
ballot_sheet.update!(data: data)
|
|
|
|
expect(ballot_sheet.parsed_ballots).to eq(["1,2,3", "4,5,6", "7,8,9"])
|
|
end
|
|
end
|
|
end
|