From cef54b4e5975eb4495f81eae5d6112d2b47b28fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Sun, 27 Sep 2020 20:58:53 +0200 Subject: [PATCH] Add and apply RepeatedExampleGroupDescription rule This rule was added in rubocop-rspec 1.38.0. Thanks to it we've detected we had one method tested in two different places. --- .rubocop.yml | 3 + spec/models/budget/investment_spec.rb | 148 ++++++++++++-------------- 2 files changed, 74 insertions(+), 77 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 70df9a03e..dc1d236cd 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -368,6 +368,9 @@ RSpec/RepeatedExample: RSpec/RepeatedExampleGroupBody: Enabled: true +RSpec/RepeatedExampleGroupDescription: + Enabled: true + RSpec/ScatteredLet: Enabled: true diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index 1dad0ca50..905eebefb 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -408,10 +408,9 @@ describe Budget::Investment do end end - describe "scoped_filter" do - let!(:budget) { create(:budget, slug: "budget_slug") } - let!(:heading) { create(:budget_heading, budget: budget) } - let!(:investment) { create(:budget_investment, :feasible, heading: heading) } + describe ".scoped_filter" do + let(:budget) { create(:budget, :balloting, slug: "budget_slug") } + let(:investment) { create(:budget_investment, budget: budget) } it "finds budget by id or slug" do results = Budget::Investment.scoped_filter({ budget_id: budget.id }, nil) @@ -427,6 +426,74 @@ describe Budget::Investment do result = Budget::Investment.scoped_filter({ budget_id: "wrong_budget" }, nil) expect(result).to be_empty end + + describe "with without_admin filter" do + let(:params) { { advanced_filters: ["without_admin"], budget_id: budget.id } } + it "returns only investment without admin" do + create(:budget_investment, + :with_administrator, + budget: budget) + investment2 = create(:budget_investment, budget: budget) + + expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment2]) + end + end + + describe "with without_valuator filter" do + let(:params) { { advanced_filters: ["without_valuator"], budget_id: budget.id } } + it "returns only investment without valuator" do + create(:budget_investment, + :with_valuator, + budget: budget) + investment2 = create(:budget_investment, + :with_administrator, + budget: budget) + investment3 = create(:budget_investment, + budget: budget) + + expect(Budget::Investment.scoped_filter(params, "all")) + .to contain_exactly(investment2, investment3) + end + end + + 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, :open, :with_valuator, + budget: budget) + create(:budget_investment, :with_administrator, budget: budget) + create(:budget_investment, budget: budget) + + expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment1]) + end + end + + describe "with valuation_finished filter" do + let(:params) { { advanced_filters: ["valuation_finished"], budget_id: budget.id } } + it "returns only investment with valuation finished" do + investment1 = create(:budget_investment, + :selected, + budget: budget) + create(:budget_investment, + :with_administrator, + budget: budget) + create(:budget_investment, + budget: budget) + + expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment1]) + end + end + + describe "with winners filter" do + let(:params) { { advanced_filters: ["winners"], budget_id: budget.id } } + it "returns only investment winners" do + investment1 = create(:budget_investment, :winner, :finished, budget: budget) + create(:budget_investment, :with_administrator, budget: budget) + create(:budget_investment, budget: budget) + + expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment1]) + end + end end describe "scopes" do @@ -1232,79 +1299,6 @@ describe Budget::Investment do end end - describe "scoped_filter" do - let(:budget) { create(:budget, :balloting) } - let(:investment) { create(:budget_investment, budget: budget) } - - describe "with without_admin filter" do - let(:params) { { advanced_filters: ["without_admin"], budget_id: budget.id } } - it "returns only investment without admin" do - create(:budget_investment, - :with_administrator, - budget: budget) - investment2 = create(:budget_investment, budget: budget) - - expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment2]) - end - end - - describe "with without_valuator filter" do - let(:params) { { advanced_filters: ["without_valuator"], budget_id: budget.id } } - it "returns only investment without valuator" do - create(:budget_investment, - :with_valuator, - budget: budget) - investment2 = create(:budget_investment, - :with_administrator, - budget: budget) - investment3 = create(:budget_investment, - budget: budget) - - expect(Budget::Investment.scoped_filter(params, "all")) - .to contain_exactly(investment2, investment3) - end - end - - 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, :open, :with_valuator, - budget: budget) - create(:budget_investment, :with_administrator, budget: budget) - create(:budget_investment, budget: budget) - - expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment1]) - end - end - - describe "with valuation_finished filter" do - let(:params) { { advanced_filters: ["valuation_finished"], budget_id: budget.id } } - it "returns only investment with valuation finished" do - investment1 = create(:budget_investment, - :selected, - budget: budget) - create(:budget_investment, - :with_administrator, - budget: budget) - create(:budget_investment, - budget: budget) - - expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment1]) - end - end - - describe "with winners filter" do - let(:params) { { advanced_filters: ["winners"], budget_id: budget.id } } - it "returns only investment winners" do - investment1 = create(:budget_investment, :winner, :finished, budget: budget) - create(:budget_investment, :with_administrator, budget: budget) - create(:budget_investment, budget: budget) - - expect(Budget::Investment.scoped_filter(params, "all")).to eq([investment1]) - end - end - end - describe "admin_and_valuator_users_associated" do let(:investment) { create(:budget_investment) } let(:valuator_group) { create(:valuator_group) }