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