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)