diff --git a/app/controllers/admin/spending_proposals_controller.rb b/app/controllers/admin/spending_proposals_controller.rb
index 2140d6f37..f01bcfa6d 100644
--- a/app/controllers/admin/spending_proposals_controller.rb
+++ b/app/controllers/admin/spending_proposals_controller.rb
@@ -2,7 +2,7 @@ class Admin::SpendingProposalsController < Admin::BaseController
include FeatureFlags
feature_flag :spending_proposals
- has_filters %w{all without_admin}, only: :index
+ has_filters %w{all without_admin without_valuators}, only: :index
load_and_authorize_resource
diff --git a/app/models/spending_proposal.rb b/app/models/spending_proposal.rb
index 8b4a9f0ef..961a5e72f 100644
--- a/app/models/spending_proposal.rb
+++ b/app/models/spending_proposal.rb
@@ -19,6 +19,7 @@ class SpendingProposal < ActiveRecord::Base
validates :terms_of_service, acceptance: { allow_nil: false }, on: :create
scope :without_admin, -> { where(administrator_id: nil) }
+ scope :without_valuators, -> { where(valuation_assignments_count: 0) }
def description
super.try :html_safe
diff --git a/app/views/admin/spending_proposals/index.html.erb b/app/views/admin/spending_proposals/index.html.erb
index 26f216876..dbbefebfb 100644
--- a/app/views/admin/spending_proposals/index.html.erb
+++ b/app/views/admin/spending_proposals/index.html.erb
@@ -1,7 +1,7 @@
<%= t("admin.spending_proposals.index.title") %>
- <%= form_tag current_path_with_query_params(page: 1), method: :get, enforce_utf8: false do %>
+ <%= form_tag admin_spending_proposals_path, method: :get, enforce_utf8: false do %>
<%= select_tag :geozone_id, options_for_select(geozone_select_options.unshift([t("geozones.none"), "all"]), params[:geozone_id]),
{ prompt: t("admin.spending_proposals.index.geozone_filter_all"),
label: false,
diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml
index 7d5cada0a..54c10e44b 100755
--- a/config/locales/admin.en.yml
+++ b/config/locales/admin.en.yml
@@ -142,6 +142,7 @@ en:
filters:
all: All
without_admin: Without assigned admin
+ without_valuators: Without valuator
title: Investment projects for participatory budgeting
admin_assigned: Assigned administrator
no_admin_assigned: No admin assigned
diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml
index bc545bb59..56c204bec 100644
--- a/config/locales/admin.es.yml
+++ b/config/locales/admin.es.yml
@@ -142,6 +142,7 @@ es:
filters:
all: Todas
without_admin: Sin administrador asignado
+ without_valuators: Sin evaluador
title: Propuestas de inversión para presupuestos participativos
admin_assigned: Administrador asignado
no_admin_assigned: Sin admin asignado
diff --git a/spec/features/admin/spending_proposals_spec.rb b/spec/features/admin/spending_proposals_spec.rb
index 9b0d21636..48d75d9bd 100644
--- a/spec/features/admin/spending_proposals_spec.rb
+++ b/spec/features/admin/spending_proposals_spec.rb
@@ -55,29 +55,43 @@ feature 'Admin spending proposals' do
expect(page).to_not have_link('All')
expect(page).to have_link('Without assigned admin')
+ expect(page).to have_link('Without valuator')
visit admin_spending_proposals_path(filter: 'without_admin')
expect(page).to_not have_link('Without assigned admin')
expect(page).to have_link('All')
+ expect(page).to have_link('Without valuator')
+
+ visit admin_spending_proposals_path(filter: 'without_valuators')
+ expect(page).to_not have_link('Without valuator')
+ expect(page).to have_link('Without assigned admin')
+ expect(page).to have_link('All')
visit admin_spending_proposals_path(filter: 'all')
expect(page).to_not have_link('All')
expect(page).to have_link('Without assigned admin')
+ expect(page).to have_link('Without valuator')
end
scenario "Filtering proposals" do
- create(:spending_proposal, title: "New idea")
assigned = create(:spending_proposal, title: "Assigned idea", administrator: create(:administrator))
+ valuating = create(:spending_proposal, title: "Evaluating...")
+ valuating.valuators << create(:valuator)
visit admin_spending_proposals_path(filter: 'all')
- expect(page).to have_content("New idea")
expect(page).to have_content("Assigned idea")
+ expect(page).to have_content("Evaluating...")
visit admin_spending_proposals_path(filter: 'without_admin')
- expect(page).to have_content("New idea")
+ expect(page).to have_content("Evaluating...")
expect(page).to_not have_content("Assigned idea")
+
+ visit admin_spending_proposals_path(filter: 'without_valuators')
+
+ expect(page).to have_content("Assigned idea")
+ expect(page).to_not have_content("Evaluating...")
end
scenario 'Show' do
diff --git a/spec/models/spending_proposal_spec.rb b/spec/models/spending_proposal_spec.rb
index ab5956bc5..5c7fcec4a 100644
--- a/spec/models/spending_proposal_spec.rb
+++ b/spec/models/spending_proposal_spec.rb
@@ -74,6 +74,19 @@ describe SpendingProposal do
expect(without_admin.first).to eq(spending_proposal1)
end
end
+
+ describe "without_valuators" do
+ it "should return all spending proposals without assigned valuators" do
+ spending_proposal1 = create(:spending_proposal)
+ spending_proposal2 = create(:spending_proposal)
+ spending_proposal1.valuators << create(:valuator)
+
+ without_admin = SpendingProposal.without_valuators
+
+ expect(without_admin.size).to eq(1)
+ expect(without_admin.first).to eq(spending_proposal2)
+ end
+ end
end
end