require "rails_helper" describe Poll::BallotSheet do let(:ballot_sheet) do budget = create(:budget) investment1 = create(:budget_investment, budget: budget) investment2 = create(:budget_investment, budget: budget) build(:poll_ballot_sheet, poll: create(:poll, budget: budget), officer_assignment: create(:poll_officer_assignment), data: "#{investment1.id};#{investment2.id}") 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 describe "#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 create(:poll_ballot_sheet, poll: create(:poll, :for_budget), data: "1,2,3;4,5,6") 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