Simplify creating ballot lines in specs
This commit is contained in:
@@ -187,11 +187,15 @@ FactoryBot.define do
|
||||
transient do
|
||||
voters { [] }
|
||||
followers { [] }
|
||||
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.balloters.each do |balloter|
|
||||
create(:budget_ballot_line, investment: investment, user: balloter)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -67,11 +67,20 @@ FactoryBot.define do
|
||||
transient do
|
||||
votables { [] }
|
||||
followables { [] }
|
||||
ballot_lines { [] }
|
||||
end
|
||||
|
||||
after(:create) do |user, evaluator|
|
||||
evaluator.votables.each { |votable| create(:vote, votable: votable, voter: user) }
|
||||
evaluator.followables.each { |followable| create(:follow, followable: followable, user: user) }
|
||||
|
||||
if evaluator.ballot_lines.any?
|
||||
ballot = create(:budget_ballot, budget: evaluator.ballot_lines.first.budget.reload, user: user)
|
||||
|
||||
evaluator.ballot_lines.each do |investment|
|
||||
create(:budget_ballot_line, investment: investment, ballot: ballot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -200,16 +200,10 @@ describe "Stats" do
|
||||
end
|
||||
|
||||
scenario "Number of votes in investment projects" do
|
||||
ballot_1 = create(:budget_ballot, budget: @budget)
|
||||
ballot_2 = create(:budget_ballot, budget: @budget)
|
||||
investment_2 = create(:budget_investment, :feasible, :selected, budget: @budget)
|
||||
|
||||
group_2 = create(:budget_group, budget: @budget)
|
||||
heading_2 = create(:budget_heading, group: group_2)
|
||||
investment_2 = create(:budget_investment, :feasible, :selected, heading: heading_2)
|
||||
|
||||
create(:budget_ballot_line, ballot: ballot_1, investment: @investment)
|
||||
create(:budget_ballot_line, ballot: ballot_1, investment: investment_2)
|
||||
create(:budget_ballot_line, ballot: ballot_2, investment: investment_2)
|
||||
create(:user, ballot_lines: [@investment, investment_2])
|
||||
create(:user, ballot_lines: [investment_2])
|
||||
|
||||
visit admin_stats_path
|
||||
click_link "Participatory Budgets"
|
||||
@@ -221,16 +215,9 @@ describe "Stats" do
|
||||
end
|
||||
|
||||
scenario "Number of users that have voted a investment project" do
|
||||
user_1 = create(:user, :level_two)
|
||||
user_2 = create(:user, :level_two)
|
||||
user_3 = create(:user, :level_two)
|
||||
|
||||
ballot_1 = create(:budget_ballot, budget: @budget, user: user_1)
|
||||
ballot_2 = create(:budget_ballot, budget: @budget, user: user_2)
|
||||
ballot_3 = create(:budget_ballot, budget: @budget, user: user_3)
|
||||
|
||||
create(:budget_ballot_line, ballot: ballot_1, investment: @investment)
|
||||
create(:budget_ballot_line, ballot: ballot_2, investment: @investment)
|
||||
create(:user, ballot_lines: [@investment])
|
||||
create(:user, ballot_lines: [@investment])
|
||||
create(:user)
|
||||
|
||||
visit admin_stats_path
|
||||
click_link "Participatory Budgets"
|
||||
|
||||
@@ -2,19 +2,19 @@ require "rails_helper"
|
||||
|
||||
describe "Ballots" do
|
||||
|
||||
let!(:user) { create(:user, :level_two) }
|
||||
let(:user) { create(:user, :level_two) }
|
||||
let!(:budget) { create(:budget, :balloting) }
|
||||
let!(:states) { create(:budget_group, budget: budget, name: "States") }
|
||||
let!(:california) { create(:budget_heading, group: states, name: "California", price: 1000) }
|
||||
let!(:new_york) { create(:budget_heading, group: states, name: "New York", price: 1000000) }
|
||||
|
||||
context "Load" do
|
||||
|
||||
let(:ballot) { create(:budget_ballot, user: user, budget: budget) }
|
||||
let(:user) do
|
||||
create(:user, :level_two, ballot_lines: [create(:budget_investment, :selected, heading: california)])
|
||||
end
|
||||
|
||||
before do
|
||||
budget.update(slug: "budget_slug")
|
||||
ballot.investments << create(:budget_investment, :selected, heading: california)
|
||||
login_as(user)
|
||||
end
|
||||
|
||||
@@ -43,7 +43,6 @@ describe "Ballots" do
|
||||
let!(:investment) { create(:budget_investment, :selected, heading: california) }
|
||||
|
||||
before do
|
||||
create(:budget_ballot, user: user, budget: budget)
|
||||
budget.update(slug: "budget_slug")
|
||||
login_as(user)
|
||||
end
|
||||
@@ -179,9 +178,7 @@ describe "Ballots" do
|
||||
end
|
||||
|
||||
scenario "Removing a investment", :js do
|
||||
investment = create(:budget_investment, :selected, heading: new_york, price: 10000)
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << investment
|
||||
investment = create(:budget_investment, :selected, heading: new_york, price: 10000, balloters: [user])
|
||||
|
||||
visit budget_path(budget)
|
||||
click_link "States"
|
||||
@@ -343,12 +340,9 @@ describe "Ballots" do
|
||||
end
|
||||
|
||||
scenario "Change my heading", :js do
|
||||
investment1 = create(:budget_investment, :selected, heading: california)
|
||||
investment1 = create(:budget_investment, :selected, heading: california, balloters: [user])
|
||||
investment2 = create(:budget_investment, :selected, heading: new_york)
|
||||
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << investment1
|
||||
|
||||
visit budget_investments_path(budget, heading_id: california.id)
|
||||
|
||||
within("#budget_investment_#{investment1.id}") do
|
||||
@@ -367,10 +361,7 @@ describe "Ballots" do
|
||||
end
|
||||
|
||||
scenario "View another heading" do
|
||||
investment = create(:budget_investment, :selected, heading: california)
|
||||
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << investment
|
||||
create(:budget_investment, :selected, heading: california, balloters: [user])
|
||||
|
||||
visit budget_investments_path(budget, heading_id: new_york.id)
|
||||
|
||||
@@ -407,9 +398,8 @@ describe "Ballots" do
|
||||
investment4 = create(:budget_investment, :selected, price: 5, heading: heading2)
|
||||
investment5 = create(:budget_investment, :selected, price: 5, heading: heading2)
|
||||
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
|
||||
ballot.investments << investment1 << investment2 << investment3 << investment4 << investment5
|
||||
user = create(:user, :level_two,
|
||||
ballot_lines: [investment1, investment2, investment3, investment4, investment5])
|
||||
|
||||
login_as(user)
|
||||
visit budget_ballot_path(budget)
|
||||
@@ -442,8 +432,7 @@ describe "Ballots" do
|
||||
|
||||
scenario "Removing investments from ballot", :js do
|
||||
investment = create(:budget_investment, :selected, price: 10, heading: new_york)
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << investment
|
||||
user = create(:user, :level_two, ballot_lines: [investment])
|
||||
|
||||
login_as(user)
|
||||
visit budget_ballot_path(budget)
|
||||
@@ -461,9 +450,7 @@ describe "Ballots" do
|
||||
scenario "Removing investments from ballot (sidebar)", :js do
|
||||
investment1 = create(:budget_investment, :selected, price: 10000, heading: new_york)
|
||||
investment2 = create(:budget_investment, :selected, price: 20000, heading: new_york)
|
||||
|
||||
ballot = create(:budget_ballot, budget: budget, user: user)
|
||||
ballot.investments << investment1 << investment2
|
||||
user = create(:user, :level_two, ballot_lines: [investment1, investment2])
|
||||
|
||||
login_as(user)
|
||||
visit budget_investments_path(budget, heading_id: new_york.id)
|
||||
@@ -588,9 +575,7 @@ describe "Ballots" do
|
||||
scenario "Different district", :js do
|
||||
bi1 = create(:budget_investment, :selected, heading: california)
|
||||
bi2 = create(:budget_investment, :selected, heading: new_york)
|
||||
|
||||
ballot = create(:budget_ballot, budget: budget, user: user)
|
||||
ballot.investments << bi1
|
||||
user = create(:user, :level_two, ballot_lines: [bi1])
|
||||
|
||||
login_as(user)
|
||||
visit budget_investments_path(budget, heading: new_york)
|
||||
@@ -605,9 +590,7 @@ describe "Ballots" do
|
||||
scenario "Insufficient funds (on page load)", :js do
|
||||
bi1 = create(:budget_investment, :selected, heading: california, price: 600)
|
||||
bi2 = create(:budget_investment, :selected, heading: california, price: 500)
|
||||
|
||||
ballot = create(:budget_ballot, budget: budget, user: user)
|
||||
ballot.investments << bi1
|
||||
user = create(:user, :level_two, ballot_lines: [bi1])
|
||||
|
||||
login_as(user)
|
||||
visit budget_investments_path(budget, heading_id: california.id)
|
||||
@@ -645,9 +628,7 @@ describe "Ballots" do
|
||||
scenario "Insufficient funds (removed after destroy)", :js do
|
||||
bi1 = create(:budget_investment, :selected, heading: california, price: 600)
|
||||
bi2 = create(:budget_investment, :selected, heading: california, price: 500)
|
||||
|
||||
ballot = create(:budget_ballot, budget: budget, user: user)
|
||||
ballot.investments << bi1
|
||||
user = create(:user, :level_two, ballot_lines: [bi1])
|
||||
|
||||
login_as(user)
|
||||
visit budget_investments_path(budget, heading_id: california.id)
|
||||
@@ -673,9 +654,7 @@ describe "Ballots" do
|
||||
scenario "Insufficient funds (removed after destroying from sidebar)", :js do
|
||||
bi1 = create(:budget_investment, :selected, heading: california, price: 600)
|
||||
bi2 = create(:budget_investment, :selected, heading: california, price: 500)
|
||||
|
||||
ballot = create(:budget_ballot, budget: budget, user: user)
|
||||
ballot.investments << bi1
|
||||
user = create(:user, :level_two, ballot_lines: [bi1])
|
||||
|
||||
login_as(user)
|
||||
visit budget_investments_path(budget, heading_id: california.id)
|
||||
|
||||
@@ -1715,13 +1715,10 @@ describe "Budget Investments" do
|
||||
describe "Reclassification" do
|
||||
|
||||
scenario "Due to heading change" do
|
||||
user = create(:user, :level_two)
|
||||
investment = create(:budget_investment, :selected, heading: heading)
|
||||
user = create(:user, :level_two, ballot_lines: [investment])
|
||||
heading2 = create(:budget_heading, group: group)
|
||||
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << investment
|
||||
|
||||
login_as(user)
|
||||
visit budget_ballot_path(budget)
|
||||
|
||||
@@ -1736,11 +1733,8 @@ describe "Budget Investments" do
|
||||
end
|
||||
|
||||
scenario "Due to being unfeasible" do
|
||||
user = create(:user, :level_two)
|
||||
investment = create(:budget_investment, :selected, heading: heading)
|
||||
|
||||
ballot = create(:budget_ballot, user: user, budget: budget)
|
||||
ballot.investments << investment
|
||||
user = create(:user, :level_two, ballot_lines: [investment])
|
||||
|
||||
login_as(user)
|
||||
visit budget_ballot_path(budget)
|
||||
|
||||
@@ -338,9 +338,7 @@ describe "Budget Investments" do
|
||||
scenario "Printing voted budget investments in balloting phase" do
|
||||
budget.update(phase: "balloting")
|
||||
|
||||
voted_investment = create(:budget_investment, :selected, heading: heading)
|
||||
ballot = create(:budget_ballot, user: create(:user, :level_two), budget: budget)
|
||||
ballot.investments << voted_investment
|
||||
voted_investment = create(:budget_investment, :selected, heading: heading, balloters: [create(:user)])
|
||||
|
||||
click_link "Print budget investments"
|
||||
|
||||
|
||||
@@ -1060,10 +1060,7 @@ describe Budget::Investment do
|
||||
it "stores the votes for a reclassified investment" do
|
||||
investment = create(:budget_investment, :selected, heading: heading1)
|
||||
|
||||
3.times do
|
||||
ballot = create(:budget_ballot, budget: budget)
|
||||
ballot.investments << investment
|
||||
end
|
||||
3.times { create(:user, ballot_lines: [investment]) }
|
||||
|
||||
expect(investment.ballot_lines_count).to eq(3)
|
||||
|
||||
@@ -1084,10 +1081,7 @@ describe Budget::Investment do
|
||||
it "removes votes from invesment" do
|
||||
investment = create(:budget_investment, :selected, heading: heading1)
|
||||
|
||||
3.times do
|
||||
ballot = create(:budget_ballot, budget: budget)
|
||||
ballot.investments << investment
|
||||
end
|
||||
3.times { create(:user, ballot_lines: [investment]) }
|
||||
|
||||
expect(investment.ballot_lines_count).to eq(3)
|
||||
|
||||
@@ -1105,10 +1099,7 @@ describe Budget::Investment do
|
||||
it "stores reclassfied votes and removes actual votes if an investment has been reclassified" do
|
||||
investment = create(:budget_investment, :selected, heading: heading1)
|
||||
|
||||
3.times do
|
||||
ballot = create(:budget_ballot, budget: budget)
|
||||
ballot.investments << investment
|
||||
end
|
||||
3.times { create(:user, ballot_lines: [investment]) }
|
||||
|
||||
expect(investment.ballot_lines_count).to eq(3)
|
||||
|
||||
@@ -1123,10 +1114,7 @@ describe Budget::Investment do
|
||||
it "does not store reclassified votes nor remove actual votes if the investment has not been reclassifed" do
|
||||
investment = create(:budget_investment, :selected, heading: heading1)
|
||||
|
||||
3.times do
|
||||
ballot = create(:budget_ballot, budget: budget)
|
||||
ballot.investments << investment
|
||||
end
|
||||
3.times { create(:user, ballot_lines: [investment]) }
|
||||
|
||||
expect(investment.ballot_lines_count).to eq(3)
|
||||
|
||||
|
||||
@@ -9,17 +9,14 @@ describe Budget::Stats do
|
||||
let!(:author) { investment.author }
|
||||
let!(:author_and_voter) { create(:user, :hidden, votables: [investment]) }
|
||||
let!(:voter) { create(:user, votables: [investment]) }
|
||||
let!(:voter_and_balloter) { create(:user, votables: [investment]) }
|
||||
let!(:balloter) { create(:user, :hidden) }
|
||||
let!(:voter_and_balloter) { create(:user, votables: [investment], ballot_lines: [investment]) }
|
||||
let!(:balloter) { create(:user, :hidden, ballot_lines: [investment]) }
|
||||
let!(:poll_balloter) { create(:user, :level_two) }
|
||||
let!(:non_participant) { create(:user, :level_two) }
|
||||
|
||||
before do
|
||||
create(:budget_investment, :selected, budget: budget, author: author_and_voter)
|
||||
|
||||
create(:budget_ballot_line, investment: investment, user: balloter)
|
||||
create(:budget_ballot_line, investment: investment, user: voter_and_balloter)
|
||||
|
||||
create(:poll_voter, :from_booth, user: poll_balloter, budget: budget)
|
||||
|
||||
create(:poll_voter, :from_booth, user: non_participant, budget: create(:budget))
|
||||
@@ -42,8 +39,7 @@ describe Budget::Stats do
|
||||
end
|
||||
|
||||
it "counts a user who is voter and balloter" do
|
||||
voter_and_balloter = create(:user, votables: [investment])
|
||||
create(:budget_ballot_line, investment: investment, user: voter_and_balloter)
|
||||
create(:user, votables: [investment], ballot_lines: [investment])
|
||||
|
||||
expect(stats.total_participants_support_phase).to be 1
|
||||
end
|
||||
@@ -58,8 +54,7 @@ describe Budget::Stats do
|
||||
end
|
||||
|
||||
it "counts a user who is voter and balloter" do
|
||||
voter_and_balloter = create(:user, votables: [investment])
|
||||
create(:budget_ballot_line, investment: investment, user: voter_and_balloter)
|
||||
create(:user, votables: [investment], ballot_lines: [investment])
|
||||
|
||||
expect(stats.total_participants_vote_phase).to be 1
|
||||
end
|
||||
@@ -72,8 +67,7 @@ describe Budget::Stats do
|
||||
end
|
||||
|
||||
it "counts once a user who is balloter and poll balloter" do
|
||||
poller_and_balloter = create(:user, :level_two)
|
||||
create(:budget_ballot_line, investment: investment, user: poller_and_balloter)
|
||||
poller_and_balloter = create(:user, :level_two, ballot_lines: [investment])
|
||||
create(:poll_voter, :from_booth, user: poller_and_balloter, budget: budget)
|
||||
|
||||
expect(stats.total_participants_vote_phase).to be 1
|
||||
|
||||
Reference in New Issue
Block a user