diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 703d1d5fd..0f313b04b 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -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) diff --git a/spec/features/comments/budget_investments_valuation_spec.rb b/spec/features/comments/budget_investments_valuation_spec.rb index 2433cb548..84a916023 100644 --- a/spec/features/comments/budget_investments_valuation_spec.rb +++ b/spec/features/comments/budget_investments_valuation_spec.rb @@ -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 diff --git a/spec/features/emails_spec.rb b/spec/features/emails_spec.rb index b3000594e..ac7f25f8f 100644 --- a/spec/features/emails_spec.rb +++ b/spec/features/emails_spec.rb @@ -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) diff --git a/spec/features/valuation/budget_investments_spec.rb b/spec/features/valuation/budget_investments_spec.rb index b96012be0..e55288940 100644 --- a/spec/features/valuation/budget_investments_spec.rb +++ b/spec/features/valuation/budget_investments_spec.rb @@ -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) diff --git a/spec/models/abilities/valuator_spec.rb b/spec/models/abilities/valuator_spec.rb index 82ea262cd..1415a030f 100644 --- a/spec/models/abilities/valuator_spec.rb +++ b/spec/models/abilities/valuator_spec.rb @@ -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 diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index 94ab490d8..e6e25518b 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -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) diff --git a/spec/models/valuator_spec.rb b/spec/models/valuator_spec.rb index 021d47d33..3224beaa5 100644 --- a/spec/models/valuator_spec.rb +++ b/spec/models/valuator_spec.rb @@ -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]