diff --git a/app/models/budget/ballot.rb b/app/models/budget/ballot.rb index 8355232a8..17e514d2c 100644 --- a/app/models/budget/ballot.rb +++ b/app/models/budget/ballot.rb @@ -66,7 +66,7 @@ class Budget end def heading_for_group(group) - self.headings.where(group: group).first + self.investments.where(group: group).first.heading end end diff --git a/spec/models/budget/ballot_spec.rb b/spec/models/budget/ballot_spec.rb index 259a4a4f4..9d4ff9608 100644 --- a/spec/models/budget/ballot_spec.rb +++ b/spec/models/budget/ballot_spec.rb @@ -5,10 +5,13 @@ describe Budget::Ballot do describe "#amount_spent" do it "returns the total amount spent in investments" do budget = create(:budget) + group1 = create(:budget_group, budget: budget) group2 = create(:budget_group, budget: budget) + heading1 = create(:budget_heading, group: group1, price: 100000) heading2 = create(:budget_heading, group: group2, price: 200000) + inv1 = create(:budget_investment, :selected, price: 10000, heading: heading1) inv2 = create(:budget_investment, :selected, price: 20000, heading: heading2) @@ -24,10 +27,13 @@ describe Budget::Ballot do it "returns the amount spent on all investments assigned to a specific heading" do budget = create(:budget) + group1 = create(:budget_group, budget: budget) group2 = create(:budget_group, budget: budget) + heading1 = create(:budget_heading, group: group1, price: 100000) heading2 = create(:budget_heading, group: group2, price: 200000) + inv1 = create(:budget_investment, :selected, price: 10000, heading: heading1) inv2 = create(:budget_investment, :selected, price: 20000, heading: heading2) inv3 = create(:budget_investment, :selected, price: 40000, heading: heading1) @@ -48,10 +54,13 @@ describe Budget::Ballot do describe "#amount_available" do it "returns how much is left after taking some investments" do budget = create(:budget) + group1 = create(:budget_group, budget: budget) group2 = create(:budget_group, budget: budget) + heading1 = create(:budget_heading, group: group1, price: 1000) heading2 = create(:budget_heading, group: group2, price: 300) + inv1 = create(:budget_investment, :selected, price: 100, heading: heading1) inv2 = create(:budget_investment, :selected, price: 200, heading: heading2) inv3 = create(:budget_investment, :selected, price: 400, heading: heading1) @@ -68,4 +77,24 @@ describe Budget::Ballot do end end + describe "#heading_for_group" do + + it "returns the heading with investments for a group" do + budget = create(:budget) + group = create(:budget_group, budget: budget) + + heading1 = create(:budget_heading, group: group) + heading2 = create(:budget_heading, group: group) + + inv1 = create(:budget_investment, :selected, heading: heading1) + inv2 = create(:budget_investment, :selected, heading: heading2) + + ballot = create(:budget_ballot, budget: budget) + ballot.investments << inv2 + + expect(ballot.heading_for_group(group)).to eq heading2 + end + + end + end