Directly assign valuators in specs

Creating a record and then assigning an association makes the code even
harder to follow.
This commit is contained in:
Javi Martín
2019-09-21 16:57:38 +02:00
parent 3ecab8af13
commit a9159e0ec8
7 changed files with 43 additions and 89 deletions

View File

@@ -80,10 +80,6 @@ describe "Admin budget investments" do
end
scenario "Display admin and valuator assignments" do
budget_investment1 = create(:budget_investment, budget: budget)
budget_investment2 = create(:budget_investment, budget: budget)
budget_investment3 = create(:budget_investment, budget: budget)
olga = create(:user, username: "Olga")
miriam = create(:user, username: "Miriam")
valuator1 = create(:valuator, user: olga, description: "Valuator Olga")
@@ -91,9 +87,10 @@ describe "Admin budget investments" do
valuator_group = create(:valuator_group, name: "Health")
admin = create(:administrator, user: create(:user, username: "Gema"))
budget_investment1.valuators << valuator1
budget_investment2.valuators << valuator1
budget_investment2.valuators << valuator2
budget_investment1 = create(:budget_investment, budget: budget, valuators: [valuator1])
budget_investment2 = create(:budget_investment, budget: budget, valuators: [valuator1, valuator2])
budget_investment3 = create(:budget_investment, budget: budget)
budget_investment2.valuator_groups << valuator_group
visit admin_budget_budget_investments_path(budget_id: budget.id)
@@ -212,9 +209,7 @@ describe "Admin budget investments" do
user = create(:user)
valuator = create(:valuator, user: user, description: "Valuator 1")
budget_investment = create(:budget_investment, title: "Realocate visitors", budget: budget)
budget_investment.valuators << valuator
create(:budget_investment, title: "Realocate visitors", budget: budget, valuators: [valuator])
create(:budget_investment, title: "Destroy the city", budget: budget)
visit admin_budget_budget_investments_path(budget_id: budget.id)
@@ -981,8 +976,9 @@ describe "Admin budget investments" do
unfeasibility_explanation: "It is impossible",
price: 1234,
price_first_year: 1000,
administrator: administrator)
budget_investment.valuators << valuator
administrator: administrator,
valuators: [valuator]
)
visit admin_budget_budget_investments_path(budget_investment.budget)
@@ -1656,12 +1652,10 @@ describe "Admin budget investments" do
end
scenario "Showing the valuating checkbox" do
investment1 = create(:budget_investment, :with_administrator, :visible_to_valuators, budget: budget)
investment2 = create(:budget_investment, :with_administrator, :invisible_to_valuators, budget: budget)
investment1.valuators << create(:valuator)
investment2.valuators << create(:valuator)
investment2.valuators << create(:valuator)
investment1 = create(:budget_investment, :with_administrator, :visible_to_valuators,
budget: budget, valuators: [create(:valuator)])
investment2 = create(:budget_investment, :with_administrator, :invisible_to_valuators,
budget: budget, valuators: [create(:valuator), create(:valuator)])
visit admin_budget_budget_investments_path(budget)

View File

@@ -5,10 +5,9 @@ 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(:investment) { create(:budget_investment, budget: budget) }
let(:investment) { create(:budget_investment, budget: budget, valuators: [valuator_user.valuator]) }
before do
investment.valuators << valuator_user.valuator
login_as(valuator_user)
end

View File

@@ -373,10 +373,8 @@ describe "Emails" do
scenario "Unfeasible investment" do
budget.update(phase: "valuating")
investment = create(:budget_investment, author: author, budget: budget)
valuator = create(:valuator)
investment.valuators << valuator
investment = create(:budget_investment, author: author, budget: budget, valuators: [valuator])
login_as(valuator.user)
visit edit_valuation_budget_budget_investment_path(budget, investment)

View File

@@ -49,11 +49,9 @@ describe "Valuation budget investments" do
describe "Index" do
scenario "Index shows budget investments assigned to current valuator" do
investment1 = create(:budget_investment, :visible_to_valuators, budget: budget)
investment1 = create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
investment2 = create(:budget_investment, :visible_to_valuators, budget: budget)
investment1.valuators << valuator
visit valuation_budget_budget_investments_path(budget)
expect(page).to have_content(investment1.title)
@@ -61,11 +59,9 @@ describe "Valuation budget investments" do
end
scenario "Index shows no budget investment to admins no valuators" do
investment1 = create(:budget_investment, :visible_to_valuators, budget: budget)
investment1 = create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
investment2 = create(:budget_investment, :visible_to_valuators, budget: budget)
investment1.valuators << valuator
logout
login_as create(:administrator).user
visit valuation_budget_budget_investments_path(budget)
@@ -76,16 +72,15 @@ describe "Valuation budget investments" do
scenario "Index orders budget investments by votes" do
investment10 = create(:budget_investment, :visible_to_valuators, budget: budget,
valuators: [valuator],
cached_votes_up: 10)
investment100 = create(:budget_investment, :visible_to_valuators, budget: budget,
valuators: [valuator],
cached_votes_up: 100)
investment1 = create(:budget_investment, :visible_to_valuators, budget: budget,
valuators: [valuator],
cached_votes_up: 1)
investment1.valuators << valuator
investment10.valuators << valuator
investment100.valuators << valuator
visit valuation_budget_budget_investments_path(budget)
expect(investment100.title).to appear_before(investment10.title)
@@ -95,8 +90,7 @@ describe "Valuation budget investments" do
scenario "Index displays investments paginated" do
per_page = Kaminari.config.default_per_page
(per_page + 2).times do
investment = create(:budget_investment, :visible_to_valuators, budget: budget)
investment.valuators << valuator
create(:budget_investment, :visible_to_valuators, budget: budget, valuators: [valuator])
end
visit valuation_budget_budget_investments_path(budget)
@@ -204,13 +198,10 @@ describe "Valuation budget investments" do
end
scenario "Index filtering by valuation status" do
valuating = create(:budget_investment, :visible_to_valuators, budget: budget,
title: "Ongoing valuation")
valuated = create(:budget_investment, :visible_to_valuators, :finished,
budget: budget,
title: "Old idea")
valuating.valuators << valuator
valuated.valuators << valuator
create(:budget_investment, :visible_to_valuators,
budget: budget, valuators: [valuator], title: "Ongoing valuation")
create(:budget_investment, :visible_to_valuators, :finished,
budget: budget, valuators: [valuator], title: "Old idea")
visit valuation_budget_budget_investments_path(budget)
@@ -239,11 +230,8 @@ describe "Valuation budget investments" do
let(:investment) do
create(:budget_investment, :unfeasible, budget: budget, price: 1234,
unfeasibility_explanation: "It is impossible",
administrator: administrator,)
end
before do
investment.valuators << [valuator, second_valuator]
administrator: administrator,
valuators: [valuator, second_valuator] )
end
scenario "visible for assigned valuators" do
@@ -320,11 +308,7 @@ describe "Valuation budget investments" do
describe "Valuate" do
let(:admin) { create(:administrator) }
let(:investment) do
create(:budget_investment, budget: budget, price: nil, administrator: admin)
end
before do
investment.valuators << valuator
create(:budget_investment, budget: budget, price: nil, administrator: admin, valuators: [valuator])
end
scenario "Dossier empty by default" do
@@ -521,8 +505,7 @@ describe "Valuation budget investments" do
scenario "not visible to valuators when budget is not valuating" do
budget.update(phase: "publishing_prices")
investment = create(:budget_investment, budget: budget)
investment.valuators << [valuator]
investment = create(:budget_investment, budget: budget, valuators: [valuator])
login_as(valuator.user)
visit edit_valuation_budget_budget_investment_path(budget, investment)
@@ -537,8 +520,7 @@ describe "Valuation budget investments" do
admin = create(:administrator, user: user)
valuator = create(:valuator, user: user)
investment = create(:budget_investment, budget: budget)
investment.valuators << [valuator]
investment = create(:budget_investment, budget: budget, valuators: [valuator])
login_as(admin.user)
visit valuation_budget_budget_investment_path(budget, investment)

View File

@@ -8,17 +8,13 @@ describe Abilities::Valuator do
let(:valuator) { create(:valuator) }
let(:group) { create(:valuator_group) }
let(:non_assigned_investment) { create(:budget_investment) }
let(:assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating)) }
let(:assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating), valuators: [valuator]) }
let(:group_assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating)) }
let(:finished_assigned_investment) { create(:budget_investment, budget: create(:budget, :finished)) }
let(:finished_assigned_investment) { create(:budget_investment, budget: create(:budget, :finished), valuators: [valuator]) }
before do
assigned_investment.valuators << valuator
group_assigned_investment.valuator_groups << group
valuator.update(valuator_group: group)
finished_assigned_investment.valuators << valuator
end
it "cannot valuate an assigned investment with a finished valuation" do

View File

@@ -337,16 +337,12 @@ describe Budget::Investment do
describe "by_valuator" do
it "returns investments assigned to specific valuator" do
investment1 = create(:budget_investment)
investment2 = create(:budget_investment)
investment3 = create(:budget_investment)
valuator1 = create(:valuator)
valuator2 = create(:valuator)
investment1.valuators << valuator1
investment2.valuators << valuator2
investment3.valuators << [valuator1, valuator2]
investment1 = create(:budget_investment, valuators: [valuator1])
investment2 = create(:budget_investment, valuators: [valuator2])
investment3 = create(:budget_investment, valuators: [valuator1, valuator2])
by_valuator = Budget::Investment.by_valuator(valuator1.id)
@@ -420,10 +416,9 @@ describe Budget::Investment do
describe "managed" do
it "returns all open investments with assigned admin but without assigned valuators" do
investment1 = create(:budget_investment, :with_administrator)
investment1 = create(:budget_investment, :with_administrator, valuators: [create(:valuator)])
investment2 = create(:budget_investment, :with_administrator, :finished)
investment3 = create(:budget_investment, :with_administrator)
investment1.valuators << create(:valuator)
managed = Budget::Investment.managed
@@ -434,11 +429,8 @@ describe Budget::Investment do
describe "valuating" do
it "returns all investments with assigned valuator but valuation not finished" do
investment1 = create(:budget_investment)
investment2 = create(:budget_investment)
investment3 = create(:budget_investment, :finished)
investment2.valuators << create(:valuator)
investment3.valuators << create(:valuator)
investment2 = create(:budget_investment, valuators: [create(:valuator)])
investment3 = create(:budget_investment, :finished, valuators: [create(:valuator)])
valuating = Budget::Investment.valuating
@@ -462,11 +454,8 @@ describe Budget::Investment do
describe "valuation_finished" do
it "returns all investments with valuation finished" do
investment1 = create(:budget_investment)
investment2 = create(:budget_investment)
investment3 = create(:budget_investment, :finished)
investment2.valuators << create(:valuator)
investment3.valuators << create(:valuator)
investment2 = create(:budget_investment, valuators: [create(:valuator)])
investment3 = create(:budget_investment, :finished, valuators: [create(:valuator)])
valuation_finished = Budget::Investment.valuation_finished
@@ -1166,9 +1155,8 @@ describe Budget::Investment do
describe "with under_valuation filter" do
let(:params) { { advanced_filters: ["under_valuation"], budget_id: budget.id } }
it "returns only investment under valuation" do
valuator1 = create(:valuator)
investment1 = create(:budget_investment, :with_administrator, :unfinished, budget: budget)
investment1.valuators << valuator1
investment1 = create(:budget_investment, :with_administrator, :unfinished,
budget: budget, valuators: [create(:valuator)])
create(:budget_investment, :with_administrator, budget: budget)
create(:budget_investment, budget: budget)

View File

@@ -20,13 +20,10 @@ describe Valuator do
it "returns investments assigned to a valuator" do
valuator = create(:valuator)
investment1 = create(:budget_investment)
investment2 = create(:budget_investment)
investment1 = create(:budget_investment, valuators: [valuator])
investment2 = create(:budget_investment, valuators: [valuator])
investment3 = create(:budget_investment)
investment1.valuators << valuator
investment2.valuators << valuator
assigned_investment_ids = valuator.assigned_investment_ids
expect(assigned_investment_ids).to match_array [investment1.id, investment2.id]