Simplify investment creation in specs

Now factories define default headings for investments, so there's no
need to create a group and a heading to create an investment.

Likewise, in order to create a heading it isn't necessary to specify a
group anymore; specifying the budget is enough.

It's possible that there are more similar cases we haven't simplified
yet; I'm only addressing the obvious ones.
This commit is contained in:
Javi Martín
2019-09-21 01:53:22 +02:00
parent 1faa659c89
commit c8c8a7bc30
17 changed files with 33 additions and 73 deletions

View File

@@ -35,10 +35,7 @@ describe "Admin budget investments" do
end
context "Load" do
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group) }
let!(:investment) { create(:budget_investment, heading: heading) }
let!(:investment) { create(:budget_investment, budget: budget) }
before { budget.update(slug: "budget_slug") }
@@ -1596,8 +1593,7 @@ describe "Admin budget investments" do
let(:valuator) { create(:valuator) }
let(:admin) { create(:administrator) }
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group) }
let(:heading) { create(:budget_heading, budget: budget) }
let(:investment1) { create(:budget_investment, heading: heading) }
let(:investment2) { create(:budget_investment, heading: heading) }

View File

@@ -153,7 +153,7 @@ describe "Admin budgets" do
context "Destroy" do
let!(:budget) { create(:budget) }
let(:heading) { create(:budget_heading, group: create(:budget_group, budget: budget)) }
let(:heading) { create(:budget_heading, budget: budget) }
scenario "Destroy a budget without investments" do
visit admin_budgets_path
@@ -270,8 +270,7 @@ describe "Admin budgets" do
scenario "For a Budget in reviewing balloting", :js do
budget = create(:budget, phase: "reviewing_ballots")
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group, price: 4)
heading = create(:budget_heading, budget: budget, price: 4)
unselected = create(:budget_investment, :unselected, heading: heading, price: 1,
ballot_lines_count: 3)
winner = create(:budget_investment, :selected, heading: heading, price: 3,
@@ -302,9 +301,7 @@ describe "Admin budgets" do
scenario "Recalculate for a finished Budget" do
budget = create(:budget, :finished)
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group)
create(:budget_investment, :winner, heading: heading)
create(:budget_investment, :winner, budget: budget)
visit edit_admin_budget_path(budget)

View File

@@ -261,8 +261,7 @@ describe "Admin download settings" do
context "Download budgets" do
let(:budget_finished) { create(:budget, phase: "finished") }
let(:group) { create(:budget_group, budget: budget_finished) }
let(:heading) { create(:budget_heading, group: group, price: 1000) }
let(:heading) { create(:budget_heading, budget: budget_finished, price: 1000) }
let(:investment1) { create(:budget_investment,
:selected,

View File

@@ -3,8 +3,7 @@ require "rails_helper"
describe "Admin hidden budget investments" do
let(:budget) { create(:budget) }
let(:group) { create(:budget_group, name: "Music", budget: budget) }
let(:heading) { create(:budget_heading, name: "Black metal", price: 666666, group: group) }
let(:heading) { create(:budget_heading, budget: budget, price: 666666) }
before do
admin = create(:administrator)

View File

@@ -76,8 +76,7 @@ describe "System Emails" do
let(:user) { create(:user, :level_two, username: "John Doe") }
let(:budget) { create(:budget, name: "Budget for 2019") }
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group) }
let(:heading) { create(:budget_heading, budget: budget) }
scenario "#proposal_notification_digest" do
proposal_a = create(:proposal, title: "Proposal A")

View File

@@ -2,9 +2,7 @@ require "rails_helper"
describe "BudgetPolls", :with_frozen_time do
let(:budget) { create(:budget, :balloting) }
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group) }
let(:investment) { create(:budget_investment, :selected, heading: heading) }
let(:investment) { create(:budget_investment, :selected, budget: budget) }
let(:poll) { create(:poll, :current, budget: budget) }
let(:booth) { create(:poll_booth) }
let(:officer) { create(:poll_officer) }

View File

@@ -115,8 +115,7 @@ describe "Budgets" do
scenario "Show informing index without links" do
budget.update_attributes(phase: "informing")
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group)
heading = create(:budget_heading, budget: budget)
visit budgets_path
@@ -134,8 +133,7 @@ describe "Budgets" do
scenario "Show finished index without heading links" do
budget.update_attributes(phase: "finished")
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group)
heading = create(:budget_heading, budget: budget)
visit budgets_path
@@ -157,10 +155,8 @@ describe "Budgets" do
end
scenario "Show investment links only on balloting or later" do
budget = create(:budget)
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group)
create(:budget_heading, budget: budget)
allowed_phase_list.each do |phase|
budget.update(phase: phase)
@@ -174,10 +170,8 @@ describe "Budgets" do
end
scenario "Not show investment links earlier of balloting " do
budget = create(:budget)
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group)
create(:budget_heading, budget: budget)
phases_without_links = ["drafting", "informing"]
not_allowed_phase_list = Budget::Phase::PHASE_KINDS -
phases_without_links -
@@ -278,9 +272,7 @@ describe "Budgets" do
end
context "Index map" do
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group) }
let(:heading) { create(:budget_heading, budget: budget) }
before do
Setting["feature.map"] = true

View File

@@ -3,8 +3,7 @@ require "rails_helper"
describe "Stats" do
let(:budget) { create(:budget, :finished) }
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group, price: 1000) }
let(:heading) { create(:budget_heading, budget: budget, price: 1000) }
context "Load" do

View File

@@ -5,9 +5,7 @@ describe "Internal valuation comments on Budget::Investments" do
let(:valuator_user) { create(:valuator).user }
let(:admin_user) { create(:administrator).user }
let(:budget) { create(:budget, :valuating) }
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group) }
let(:investment) { create(:budget_investment, budget: budget, group: group, heading: heading) }
let(:investment) { create(:budget_investment, budget: budget) }
before do
investment.valuators << valuator_user.valuator

View File

@@ -352,8 +352,7 @@ describe "Emails" do
context "Budgets" do
let(:author) { create(:user, :level_two) }
let(:budget) { create(:budget) }
let(:group) { create(:budget_group, name: "Health", budget: budget) }
let!(:heading) { create(:budget_heading, name: "More hospitals", group: group) }
let!(:heading) { create(:budget_heading, name: "More hospitals", budget: budget) }
scenario "Investment created" do
login_as(author)
@@ -380,7 +379,7 @@ describe "Emails" do
scenario "Unfeasible investment" do
budget.update(phase: "valuating")
investment = create(:budget_investment, author: author, budget: budget, heading: heading)
investment = create(:budget_investment, author: author, budget: budget)
valuator = create(:valuator)
investment.valuators << valuator

View File

@@ -3,8 +3,7 @@ require "rails_helper"
describe "Moderate budget investments" do
let(:budget) { create(:budget) }
let(:group) { create(:budget_group, name: "Culture", budget: budget) }
let(:heading) { create(:budget_heading, name: "More libraries", price: 666666, group: group) }
let(:heading) { create(:budget_heading, budget: budget, price: 666666) }
before do
@mod = create(:moderator)

View File

@@ -171,9 +171,7 @@ describe "Valuation budget investments" do
describe "Milestones" do
let(:admin) { create(:administrator) }
let(:investment) do
heading = create(:budget_heading)
create(:budget_investment, heading: heading, budget: budget,
administrator: admin)
create(:budget_investment, budget: budget, administrator: admin)
end
before do
@@ -254,9 +252,7 @@ describe "Valuation budget investments" do
let(:admin) { create(:administrator) }
let(:investment) do
heading = create(:budget_heading)
create(:budget_investment, heading: heading, budget: budget,
administrator: admin)
create(:budget_investment, budget: budget, administrator: admin)
end
before do

View File

@@ -324,10 +324,7 @@ describe "Valuation budget investments" do
describe "Valuate" do
let(:admin) { create(:administrator) }
let(:investment) do
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group)
create(:budget_investment, heading: heading, group: group, budget: budget, price: nil,
administrator: admin)
create(:budget_investment, budget: budget, price: nil, administrator: admin)
end
before do

View File

@@ -13,8 +13,7 @@ describe Budget::Ballot do
it "is not valid with the same investment twice" do
budget = create(:budget)
group = create(:budget_group, budget: budget)
heading = create(:budget_heading, group: group)
heading = create(:budget_heading, budget: budget)
investment = create(:budget_investment, :selected, heading: heading)
ballot = create(:budget_ballot, budget: budget)

View File

@@ -381,8 +381,7 @@ describe Budget::Investment do
describe "scoped_filter" do
let!(:budget) { create(:budget, slug: "budget_slug") }
let!(:group) { create(:budget_group, budget: budget) }
let!(:heading) { create(:budget_heading, group: group) }
let!(:heading) { create(:budget_heading, budget: budget) }
let!(:investment) { create(:budget_investment, :feasible, heading: heading) }
it "finds budget by id or slug" do
@@ -967,16 +966,14 @@ describe Budget::Investment do
describe "total votes" do
it "takes into account physical votes in addition to web votes" do
b = create(:budget, :selecting)
g = create(:budget_group, budget: b)
h = create(:budget_heading, group: g)
i = create(:budget_investment, budget: b, group: g, heading: h)
budget = create(:budget, :selecting)
investment = create(:budget_investment, budget: budget)
i.register_selection(create(:user, :level_two))
expect(i.total_votes).to eq(1)
investment.register_selection(create(:user, :level_two))
expect(investment.total_votes).to eq(1)
i.physical_votes = 10
expect(i.total_votes).to eq(11)
investment.physical_votes = 10
expect(investment.total_votes).to eq(11)
end
end
@@ -995,8 +992,7 @@ describe Budget::Investment do
describe "Permissions" do
let(:budget) { create(:budget) }
let(:group) { create(:budget_group, budget: budget) }
let(:heading) { create(:budget_heading, group: group) }
let(:heading) { create(:budget_heading, budget: budget) }
let(:user) { create(:user, :level_two) }
let(:luser) { create(:user) }
let(:ballot) { create(:budget_ballot, budget: budget) }

View File

@@ -4,8 +4,7 @@ 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) }
let(:heading) { create(:budget_heading, budget: budget, price: 1000) }
context "When there is no winners" do
it "calculates the correct winner set" do

View File

@@ -187,10 +187,8 @@ describe Budget do
end
describe "heading_price" do
let(:group) { create(:budget_group, budget: budget) }
it "returns the heading price if the heading provided is part of the budget" do
heading = create(:budget_heading, price: 100, group: group)
heading = create(:budget_heading, price: 100, budget: budget)
expect(budget.heading_price(heading)).to eq(100)
end