diff --git a/app/helpers/budgets_helper.rb b/app/helpers/budgets_helper.rb index 24dd935c2..4c73f52da 100644 --- a/app/helpers/budgets_helper.rb +++ b/app/helpers/budgets_helper.rb @@ -52,8 +52,8 @@ module BudgetsHelper Budget::Ballot.where(user: current_user, budget: @budget).first end - def investment_tags_select_options - Budget::Investment.tags_on(:valuation).order(:name).select(:name).distinct + def investment_tags_select_options(budget) + Budget::Investment.where(budget_id: budget).tags_on(:valuation).order(:name).select(:name).distinct end def budget_published?(budget) diff --git a/app/views/admin/budget_investments/index.html.erb b/app/views/admin/budget_investments/index.html.erb index 522382939..19acdebd3 100644 --- a/app/views/admin/budget_investments/index.html.erb +++ b/app/views/admin/budget_investments/index.html.erb @@ -27,14 +27,15 @@ class: "js-submit-on-change" } %> -
- <%= select_tag :tag_name, - options_for_select(investment_tags_select_options, params[:tag_name]), - { prompt: t("admin.budget_investments.index.tags_filter_all"), - label: false, - class: "js-submit-on-change" } %> -
-<% end %> +
+ <%= select_tag :tag_name, + options_for_select(investment_tags_select_options(@budget), params[:tag_name]), + { prompt: t("admin.budget_investments.index.tags_filter_all"), + label: false, + class: "js-submit-on-change" } %> +
+ <% end %> + <%= render "advanced_filters", i18n_namespace: "admin.budget_investments.index" %> diff --git a/spec/features/admin/budget_investments_spec.rb b/spec/features/admin/budget_investments_spec.rb index 8bf28e313..096bb5146 100644 --- a/spec/features/admin/budget_investments_spec.rb +++ b/spec/features/admin/budget_investments_spec.rb @@ -281,6 +281,23 @@ feature 'Admin budget investments' do expect(page).to have_select("tag_name", options: ["All tags", "Hospitals", "Teachers"]) end + scenario "Filtering by tag, display only valuation tags of the current budget" do + new_budget = create(:budget) + investment1 = create(:budget_investment, budget: @budget, tag_list: 'Roads') + investment2 = create(:budget_investment, budget: new_budget, tag_list: 'Accessibility') + + investment1.set_tag_list_on(:valuation, 'Roads') + investment2.set_tag_list_on(:valuation, 'Accessibility') + + investment1.save + investment2.save + + visit admin_budget_budget_investments_path(budget_id: @budget.id) + + expect(page).to have_select("tag_name", options: ["All tags", "Roads"]) + expect(page).not_to have_select("tag_name", options: ["All tags", "Accessibility"]) + end + scenario "Limiting by max number of investments per heading", :js do group_1 = create(:budget_group, budget: @budget) group_2 = create(:budget_group, budget: @budget)