Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify valuator factories #3727

Merged
merged 3 commits into from
Sep 30, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions spec/factories/budgets.rb
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,10 @@
administrator
end

trait :with_valuator do
valuators { [create(:valuator)] }
end

trait :flagged do
after :create do |investment|
Flag.flag(create(:user), investment)
Expand Down
41 changes: 15 additions & 26 deletions spec/features/admin/budget_investments_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,21 +80,17 @@
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")
valuator2 = create(:valuator, user: miriam, description: "Valuator Miriam")
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_investment2.valuator_groups << valuator_group
budget_investment1 = create(:budget_investment, budget: budget, valuators: [valuator1])
budget_investment2 = create(:budget_investment, budget: budget, valuators: [valuator1, valuator2],
valuator_groups: [valuator_group])
budget_investment3 = create(:budget_investment, budget: budget)

visit admin_budget_budget_investments_path(budget_id: budget.id)

Expand Down Expand Up @@ -212,9 +208,7 @@
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)
Expand Down Expand Up @@ -246,11 +240,8 @@
health_group = create(:valuator_group, name: "Health")
culture_group = create(:valuator_group, name: "Culture")

budget_investment1 = create(:budget_investment, title: "Build a hospital", budget: budget)
budget_investment1.valuator_groups << health_group

budget_investment2 = create(:budget_investment, title: "Build a theatre", budget: budget)
budget_investment2.valuator_groups << culture_group
create(:budget_investment, title: "Build a hospital", budget: budget, valuator_groups: [health_group])
create(:budget_investment, title: "Build a theatre", budget: budget, valuator_groups: [culture_group])

visit admin_budget_budget_investments_path(budget_id: budget)
expect(page).to have_link("Build a hospital")
Expand Down Expand Up @@ -452,8 +443,7 @@

scenario "Filtering by assignment status" do
create(:budget_investment, :with_administrator, title: "Assigned idea", budget: budget)
create(:budget_investment, title: "Evaluating...", budget: budget,
valuators: [create(:valuator)])
create(:budget_investment, :with_valuator, title: "Evaluating...", budget: budget)
create(:budget_investment, title: "With group", budget: budget,
valuator_groups: [create(:valuator_group)])

Expand Down Expand Up @@ -981,8 +971,9 @@
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)

Expand Down Expand Up @@ -1656,12 +1647,10 @@
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, :with_valuator, :visible_to_valuators,
budget: budget)
investment2 = create(:budget_investment, :with_administrator, :with_valuator, :invisible_to_valuators,
budget: budget)

visit admin_budget_budget_investments_path(budget)

Expand Down
3 changes: 1 addition & 2 deletions spec/features/comments/budget_investments_valuation_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@
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

Expand Down
4 changes: 1 addition & 3 deletions spec/features/emails_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -373,10 +373,8 @@

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)
Expand Down
48 changes: 15 additions & 33 deletions spec/features/valuation/budget_investments_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,23 +49,19 @@

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)
expect(page).not_to have_content(investment2.title)
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)
Expand All @@ -76,16 +72,15 @@

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)
Expand All @@ -95,8 +90,7 @@
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)
Expand Down Expand Up @@ -204,13 +198,10 @@
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)

Expand Down Expand Up @@ -239,11 +230,8 @@
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
Expand Down Expand Up @@ -320,11 +308,7 @@
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
Expand Down Expand Up @@ -521,8 +505,7 @@
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)
Expand All @@ -537,8 +520,7 @@
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)
Expand Down
17 changes: 4 additions & 13 deletions spec/models/abilities/valuator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,12 @@
subject(:ability) { Ability.new(user) }

let(:user) { valuator.user }
let(:valuator) { create(:valuator) }
let(:group) { create(:valuator_group) }
let(:valuator) { create(:valuator, valuator_group: group) }
let(:non_assigned_investment) { create(:budget_investment) }
let(:assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating)) }
let(:group_assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating)) }
let(:finished_assigned_investment) { create(:budget_investment, budget: create(:budget, :finished)) }

before do
assigned_investment.valuators << valuator

group_assigned_investment.valuator_groups << group
valuator.update(valuator_group: group)

finished_assigned_investment.valuators << valuator
end
let(:assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating), valuators: [valuator]) }
javierm marked this conversation as resolved.
Show resolved Hide resolved
let(:group_assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating), valuator_groups: [group]) }
javierm marked this conversation as resolved.
Show resolved Hide resolved
let(:finished_assigned_investment) { create(:budget_investment, budget: create(:budget, :finished), valuators: [valuator]) }
javierm marked this conversation as resolved.
Show resolved Hide resolved

it "cannot valuate an assigned investment with a finished valuation" do
assigned_investment.update(valuation_finished: true)
Expand Down
39 changes: 12 additions & 27 deletions spec/models/budget/investment_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -337,16 +337,12 @@

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])
javierm marked this conversation as resolved.
Show resolved Hide resolved
investment3 = create(:budget_investment, valuators: [valuator1, valuator2])

by_valuator = Budget::Investment.by_valuator(valuator1.id)

Expand Down Expand Up @@ -420,10 +416,9 @@

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, :with_valuator)
javierm marked this conversation as resolved.
Show resolved Hide resolved
investment2 = create(:budget_investment, :with_administrator, :finished)
investment3 = create(:budget_investment, :with_administrator)
investment1.valuators << create(:valuator)

managed = Budget::Investment.managed

Expand All @@ -434,11 +429,8 @@
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, :with_valuator)
investment3 = create(:budget_investment, :with_valuator, :finished)
javierm marked this conversation as resolved.
Show resolved Hide resolved

valuating = Budget::Investment.valuating

Expand All @@ -447,11 +439,8 @@

it "returns all investments with assigned valuator groups but valuation not finished" do
investment1 = create(:budget_investment)
investment2 = create(:budget_investment)
investment3 = create(:budget_investment, :finished)

investment2.valuator_groups << create(:valuator_group)
investment3.valuator_groups << create(:valuator_group)
investment2 = create(:budget_investment, valuator_groups: [create(:valuator_group)])
investment3 = create(:budget_investment, :finished, valuator_groups: [create(:valuator_group)])
javierm marked this conversation as resolved.
Show resolved Hide resolved

valuating = Budget::Investment.valuating

Expand All @@ -462,11 +451,8 @@
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, :with_valuator)
javierm marked this conversation as resolved.
Show resolved Hide resolved
investment3 = create(:budget_investment, :with_valuator, :finished)

valuation_finished = Budget::Investment.valuation_finished

Expand Down Expand Up @@ -1166,9 +1152,8 @@
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, :with_valuator,
budget: budget)
create(:budget_investment, :with_administrator, budget: budget)
create(:budget_investment, budget: budget)

Expand Down
14 changes: 4 additions & 10 deletions spec/models/valuator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,10 @@

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]
Expand All @@ -37,13 +34,10 @@
group = create(:valuator_group)
valuator = create(:valuator, valuator_group: group)

investment1 = create(:budget_investment)
investment2 = create(:budget_investment)
investment1 = create(:budget_investment, valuator_groups: [group])
investment2 = create(:budget_investment, valuator_groups: [group])
investment3 = create(:budget_investment)

investment1.valuator_groups << group
investment2.valuator_groups << group

assigned_investment_ids = valuator.assigned_investment_ids

expect(assigned_investment_ids).to match_array [investment1.id, investment2.id]
Expand Down