35 lines
1.6 KiB
Ruby
35 lines
1.6 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe Budget::Result do
|
|
|
|
describe "calculate_winners" do
|
|
let(:budget) { create(:budget) }
|
|
let(:group) { create(:budget_group, budget: budget) }
|
|
let(:heading) { create(:budget_heading, group: group, price: 1000) }
|
|
|
|
it "calculates a budget's winner investments" do
|
|
investment1 = 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)
|
|
investment3 = create(:budget_investment, :selected, heading: heading, price: 500, ballot_lines_count: 700)
|
|
investment4 = create(:budget_investment, :selected, heading: heading, price: 100, ballot_lines_count: 600)
|
|
|
|
result = Budget::Result.new(budget, heading)
|
|
result.calculate_winners
|
|
|
|
expect(result.winners).to eq([investment1, investment2, investment3])
|
|
end
|
|
|
|
it "resets winners before recalculating" do
|
|
investment1 = create(:budget_investment, :selected, heading: heading, price: 200, ballot_lines_count: 900, winner: true)
|
|
investment2 = create(:budget_investment, :selected, heading: heading, price: 300, ballot_lines_count: 800, winner: true)
|
|
investment3 = create(:budget_investment, :selected, heading: heading, price: 500, ballot_lines_count: 700, winner: true)
|
|
investment4 = create(:budget_investment, :selected, heading: heading, price: 100, ballot_lines_count: 600, winner: true)
|
|
|
|
result = Budget::Result.new(budget, heading)
|
|
result.calculate_winners
|
|
|
|
expect(result.winners).to eq([investment1, investment2, investment3])
|
|
end
|
|
end
|
|
|
|
end |