Simplify adding investments to ballots in specs
This commit is contained in:
@@ -194,12 +194,18 @@ FactoryBot.define do
|
||||
transient do
|
||||
voters { [] }
|
||||
followers { [] }
|
||||
ballots { [] }
|
||||
balloters { [] }
|
||||
end
|
||||
|
||||
after(:create) do |investment, evaluator|
|
||||
evaluator.voters.each { |voter| create(:vote, votable: investment, voter: voter) }
|
||||
evaluator.followers.each { |follower| create(:follow, followable: investment, user: follower) }
|
||||
|
||||
evaluator.ballots.each do |ballot|
|
||||
create(:budget_ballot_line, investment: investment, ballot: ballot)
|
||||
end
|
||||
|
||||
evaluator.balloters.each do |balloter|
|
||||
create(:budget_ballot_line, investment: investment, user: balloter)
|
||||
end
|
||||
@@ -219,6 +225,14 @@ FactoryBot.define do
|
||||
factory :budget_ballot, class: "Budget::Ballot" do
|
||||
association :user, factory: :user
|
||||
budget
|
||||
|
||||
transient { investments { [] } }
|
||||
|
||||
after(:create) do |ballot, evaluator|
|
||||
evaluator.investments.each do |investment|
|
||||
create(:budget_ballot_line, investment: investment, ballot: ballot)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
factory :budget_ballot_line, class: "Budget::Ballot::Line" do
|
||||
|
||||
@@ -13,11 +13,8 @@ describe Budget::Ballot do
|
||||
|
||||
it "is not valid with the same investment twice" do
|
||||
budget = create(:budget)
|
||||
heading = create(:budget_heading, budget: budget)
|
||||
investment = create(:budget_investment, :selected, heading: heading)
|
||||
|
||||
ballot = create(:budget_ballot, budget: budget)
|
||||
ballot.investments << investment
|
||||
investment = create(:budget_investment, :selected, budget: budget)
|
||||
ballot = create(:budget_ballot, budget: budget.reload, investments: [investment])
|
||||
|
||||
expect { ballot.investments << investment }.to raise_error(ActiveRecord::RecordNotUnique)
|
||||
end
|
||||
@@ -103,16 +100,14 @@ describe Budget::Ballot do
|
||||
|
||||
it "returns the heading with balloted investments for a group" do
|
||||
budget = create(:budget)
|
||||
ballot = create(:budget_ballot, budget: 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
|
||||
create(:budget_investment, :selected, heading: heading1)
|
||||
create(:budget_investment, :selected, heading: heading2, ballots: [ballot])
|
||||
|
||||
expect(ballot.heading_for_group(group)).to eq heading2
|
||||
end
|
||||
|
||||
@@ -976,8 +976,7 @@ describe Budget::Investment do
|
||||
|
||||
inv1 = create(:budget_investment, :selected, budget: budget, heading: california)
|
||||
inv2 = create(:budget_investment, :selected, budget: budget, heading: new_york)
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << inv1
|
||||
ballot = create(:budget_ballot, user: user, budget: budget, investments: [inv1])
|
||||
|
||||
expect(inv2.reason_for_not_being_ballotable_by(user, ballot)).to eq(:different_heading_assigned_html)
|
||||
end
|
||||
@@ -989,8 +988,7 @@ describe Budget::Investment do
|
||||
inv1 = create(:budget_investment, :selected, budget: budget, heading: carabanchel, price: 30)
|
||||
inv2 = create(:budget_investment, :selected, budget: budget, heading: carabanchel, price: 10)
|
||||
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << inv1
|
||||
ballot = create(:budget_ballot, user: user, budget: budget, investments: [inv1])
|
||||
|
||||
expect(inv2.reason_for_not_being_ballotable_by(user, ballot)).to eq(:not_enough_money_html)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user