From a9159e0ec8fec089b9533dcd65b05d2b51a70e70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 21 Sep 2019 16:57:38 +0200 Subject: [PATCH 1/3] Directly assign valuators in specs Creating a record and then assigning an association makes the code even harder to follow. --- .../features/admin/budget_investments_spec.rb | 30 +++++------- .../budget_investments_valuation_spec.rb | 3 +- spec/features/emails_spec.rb | 4 +- .../valuation/budget_investments_spec.rb | 48 ++++++------------- spec/models/abilities/valuator_spec.rb | 8 +--- spec/models/budget/investment_spec.rb | 32 ++++--------- spec/models/valuator_spec.rb | 7 +-- 7 files changed, 43 insertions(+), 89 deletions(-) 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] From 05f63ca08dc04acb8702742be009296a202bc67e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 21 Sep 2019 17:06:08 +0200 Subject: [PATCH 2/3] Add trait to create an investment with a valuator --- spec/factories/budgets.rb | 4 ++++ spec/features/admin/budget_investments_spec.rb | 11 +++++------ spec/models/budget/investment_spec.rb | 14 +++++++------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/spec/factories/budgets.rb b/spec/factories/budgets.rb index 3f6e637ba..b1942cf08 100644 --- a/spec/factories/budgets.rb +++ b/spec/factories/budgets.rb @@ -173,6 +173,10 @@ FactoryBot.define do administrator end + trait :with_valuator do + valuators { [create(:valuator)] } + end + trait :flagged do after :create do |investment| Flag.flag(create(:user), investment) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 0f313b04b..8a83e4ce4 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -447,8 +447,7 @@ describe "Admin budget investments" do 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)]) @@ -1652,10 +1651,10 @@ describe "Admin budget investments" do end scenario "Showing the valuating checkbox" do - 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)]) + 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) diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index e6e25518b..01d812ea2 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -416,7 +416,7 @@ 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, valuators: [create(:valuator)]) + investment1 = create(:budget_investment, :with_administrator, :with_valuator) investment2 = create(:budget_investment, :with_administrator, :finished) investment3 = create(:budget_investment, :with_administrator) @@ -429,8 +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, valuators: [create(:valuator)]) - investment3 = create(:budget_investment, :finished, valuators: [create(:valuator)]) + investment2 = create(:budget_investment, :with_valuator) + investment3 = create(:budget_investment, :with_valuator, :finished) valuating = Budget::Investment.valuating @@ -454,8 +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, valuators: [create(:valuator)]) - investment3 = create(:budget_investment, :finished, valuators: [create(:valuator)]) + investment2 = create(:budget_investment, :with_valuator) + investment3 = create(:budget_investment, :with_valuator, :finished) valuation_finished = Budget::Investment.valuation_finished @@ -1155,8 +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 - investment1 = create(:budget_investment, :with_administrator, :unfinished, - budget: budget, valuators: [create(:valuator)]) + investment1 = create(:budget_investment, :with_administrator, :unfinished, :with_valuator, + budget: budget) create(:budget_investment, :with_administrator, budget: budget) create(:budget_investment, budget: budget) From c6808c9c12dcf08676e5e46f3dc1b03e91a19df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sat, 21 Sep 2019 17:39:50 +0200 Subject: [PATCH 3/3] Directly assign valuator groups in specs --- spec/features/admin/budget_investments_spec.rb | 12 ++++-------- spec/features/valuation/budget_investments_spec.rb | 2 +- spec/models/abilities/valuator_spec.rb | 9 ++------- spec/models/budget/investment_spec.rb | 7 ++----- spec/models/valuator_spec.rb | 7 ++----- 5 files changed, 11 insertions(+), 26 deletions(-) diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 8a83e4ce4..5195c6c7e 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -88,11 +88,10 @@ describe "Admin budget investments" do admin = create(:administrator, user: create(:user, username: "Gema")) budget_investment1 = create(:budget_investment, budget: budget, valuators: [valuator1]) - budget_investment2 = create(:budget_investment, budget: budget, valuators: [valuator1, valuator2]) + budget_investment2 = create(:budget_investment, budget: budget, valuators: [valuator1, valuator2], + valuator_groups: [valuator_group]) budget_investment3 = create(:budget_investment, budget: budget) - budget_investment2.valuator_groups << valuator_group - visit admin_budget_budget_investments_path(budget_id: budget.id) within("#budget_investment_#{budget_investment1.id}") do @@ -241,11 +240,8 @@ describe "Admin budget investments" do 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") diff --git a/spec/features/valuation/budget_investments_spec.rb b/spec/features/valuation/budget_investments_spec.rb index e55288940..b8f787c01 100644 --- a/spec/features/valuation/budget_investments_spec.rb +++ b/spec/features/valuation/budget_investments_spec.rb @@ -231,7 +231,7 @@ describe "Valuation budget investments" do create(:budget_investment, :unfeasible, budget: budget, price: 1234, unfeasibility_explanation: "It is impossible", administrator: administrator, - valuators: [valuator, second_valuator] ) + valuators: [valuator, second_valuator]) end scenario "visible for assigned valuators" do diff --git a/spec/models/abilities/valuator_spec.rb b/spec/models/abilities/valuator_spec.rb index 1415a030f..379001a25 100644 --- a/spec/models/abilities/valuator_spec.rb +++ b/spec/models/abilities/valuator_spec.rb @@ -5,18 +5,13 @@ describe Abilities::Valuator do 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), valuators: [valuator]) } - let(:group_assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating)) } + let(:group_assigned_investment) { create(:budget_investment, budget: create(:budget, :valuating), valuator_groups: [group]) } let(:finished_assigned_investment) { create(:budget_investment, budget: create(:budget, :finished), valuators: [valuator]) } - before do - group_assigned_investment.valuator_groups << group - valuator.update(valuator_group: group) - end - it "cannot valuate an assigned investment with a finished valuation" do assigned_investment.update(valuation_finished: true) diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index 01d812ea2..960acb9bc 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -439,11 +439,8 @@ describe Budget::Investment do 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)]) valuating = Budget::Investment.valuating diff --git a/spec/models/valuator_spec.rb b/spec/models/valuator_spec.rb index 3224beaa5..f652757b1 100644 --- a/spec/models/valuator_spec.rb +++ b/spec/models/valuator_spec.rb @@ -34,13 +34,10 @@ describe Valuator do 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]