Check lines count instead of IDs in results spec

This is easier to follow
This commit is contained in:
Javi Martín
2019-09-28 05:46:05 +02:00
parent 0f80dabfe4
commit bbf8eebb80

View File

@@ -29,59 +29,59 @@ describe Budget::Result do
end end
it "excludes incompatible investments" do it "excludes incompatible investments" do
investment1 = create(:budget_investment, :selected, heading: heading, price: 200, ballot_lines_count: 900, winner: false) create(:budget_investment, :selected, heading: heading, price: 200, ballot_lines_count: 900)
investment2 = create(:budget_investment, :selected, heading: heading, price: 300, ballot_lines_count: 800, winner: false) create(:budget_investment, :selected, heading: heading, price: 300, ballot_lines_count: 800)
investment3 = create(:budget_investment, :incompatible, heading: heading, price: 500, ballot_lines_count: 700, winner: false) create(:budget_investment, :incompatible, heading: heading, price: 500, ballot_lines_count: 700)
investment4 = create(:budget_investment, :selected, heading: heading, price: 500, ballot_lines_count: 600, winner: false) create(:budget_investment, :selected, heading: heading, price: 500, ballot_lines_count: 600)
investment5 = create(:budget_investment, :selected, heading: heading, price: 100, ballot_lines_count: 500, winner: false) create(:budget_investment, :selected, heading: heading, price: 100, ballot_lines_count: 500)
Budget::Result.new(budget, heading).calculate_winners Budget::Result.new(budget, heading).calculate_winners
expect(heading.investments.winners.pluck(:id)).to match_array([investment1.id, investment2.id, investment4.id]) expect(heading.investments.winners.pluck(:ballot_lines_count)).to match_array([900, 800, 600])
end end
end end
context "When there are winners" do context "When there are winners" do
it "removes winners and recalculates" do it "removes winners and recalculates" do
investment1 = create(:budget_investment, :winner, heading: heading, price: 200, ballot_lines_count: 900) create(:budget_investment, :selected, heading: heading, price: 200, ballot_lines_count: 900)
investment2 = create(:budget_investment, :winner, heading: heading, price: 300, ballot_lines_count: 800) create(:budget_investment, :winner, heading: heading, price: 300, ballot_lines_count: 800)
investment3 = create(:budget_investment, :incompatible, heading: heading, price: 500, ballot_lines_count: 700, winner: true) create(:budget_investment, :winner, :incompatible, heading: heading, price: 500, ballot_lines_count: 700)
investment4 = create(:budget_investment, :winner, heading: heading, price: 500, ballot_lines_count: 600) create(:budget_investment, :winner, heading: heading, price: 500, ballot_lines_count: 600)
investment5 = create(:budget_investment, :winner, heading: heading, price: 100, ballot_lines_count: 500) create(:budget_investment, :winner, heading: heading, price: 100, ballot_lines_count: 500)
Budget::Result.new(budget, heading).calculate_winners Budget::Result.new(budget, heading).calculate_winners
expect(heading.investments.winners.pluck(:id)).to match_array([investment1.id, investment2.id, investment4.id]) expect(heading.investments.winners.pluck(:ballot_lines_count)).to match_array([900, 800, 600])
end end
end end
context "When a winner is flagged as incompatible" do context "When a winner is flagged as incompatible" do
it "recalculates winners leaving it out" do it "recalculates winners leaving it out" do
investment1 = create(:budget_investment, :winner, heading: heading, price: 200, ballot_lines_count: 900) wrong_win = create(:budget_investment, :winner, heading: heading, price: 200, ballot_lines_count: 900)
investment2 = create(:budget_investment, :winner, heading: heading, price: 300, ballot_lines_count: 800)
investment3 = create(:budget_investment, :winner, heading: heading, price: 500, ballot_lines_count: 700)
investment4 = create(:budget_investment, :winner, heading: heading, price: 500, ballot_lines_count: 600)
investment5 = create(:budget_investment, :winner, heading: heading, price: 100, ballot_lines_count: 500)
investment3.incompatible = true create(:budget_investment, :winner, heading: heading, price: 300, ballot_lines_count: 800)
investment3.save create(:budget_investment, :winner, heading: heading, price: 500, ballot_lines_count: 700)
create(:budget_investment, :winner, heading: heading, price: 200, ballot_lines_count: 600)
create(:budget_investment, :winner, heading: heading, price: 100, ballot_lines_count: 500)
expect(heading.investments.winners.pluck(:id)).to match_array([investment1.id, investment2.id, investment4.id]) wrong_win.update(incompatible: true)
expect(heading.investments.winners.pluck(:ballot_lines_count)).to match_array([800, 700, 600])
end end
end end
context "When an incompatible is flagged as compatible again" do context "When an incompatible is flagged as compatible again" do
it "recalculates winners taking it in consideration" do it "recalculates winners taking it in consideration" do
investment1 = create(:budget_investment, :winner, heading: heading, price: 200, ballot_lines_count: 900) miss = create(:budget_investment, :incompatible, heading: heading, price: 200, ballot_lines_count: 900)
investment2 = create(:budget_investment, :winner, heading: heading, price: 300, ballot_lines_count: 800)
investment3 = create(:budget_investment, :incompatible, heading: heading, price: 500, ballot_lines_count: 700)
investment4 = create(:budget_investment, :winner, heading: heading, price: 500, ballot_lines_count: 600)
investment5 = create(:budget_investment, :winner, heading: heading, price: 100, ballot_lines_count: 500)
investment3.incompatible = false create(:budget_investment, :winner, heading: heading, price: 300, ballot_lines_count: 800)
investment3.save create(:budget_investment, :winner, heading: heading, price: 500, ballot_lines_count: 700)
create(:budget_investment, :winner, heading: heading, price: 200, ballot_lines_count: 600)
create(:budget_investment, :winner, heading: heading, price: 100, ballot_lines_count: 500)
expect(heading.investments.winners.pluck(:id)).to match_array([investment1.id, investment2.id, investment3.id]) miss.update(incompatible: false)
expect(heading.investments.winners.pluck(:ballot_lines_count)).to match_array([900, 800, 700])
end end
end end
end end