Simplify adding investments to ballots in specs

This commit is contained in:
Javi Martín
2019-09-28 20:25:32 +02:00
parent c34ebc9a53
commit e2b536e8f8
3 changed files with 21 additions and 14 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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