adds valuation status filtering to admin

This commit is contained in:
Juanjo Bazán
2016-02-26 11:45:29 +01:00
parent deee2b6275
commit 9eea8fd4a9
6 changed files with 84 additions and 2 deletions

View File

@@ -2,7 +2,7 @@ class Admin::SpendingProposalsController < Admin::BaseController
include FeatureFlags include FeatureFlags
feature_flag :spending_proposals feature_flag :spending_proposals
has_filters %w{all without_admin without_valuators}, only: :index has_filters %w{all without_admin without_valuators valuating valuation_finished}, only: :index
load_and_authorize_resource load_and_authorize_resource

View File

@@ -20,6 +20,8 @@ class SpendingProposal < ActiveRecord::Base
scope :without_admin, -> { where(administrator_id: nil) } scope :without_admin, -> { where(administrator_id: nil) }
scope :without_valuators, -> { where(valuation_assignments_count: 0) } scope :without_valuators, -> { where(valuation_assignments_count: 0) }
scope :valuating, -> { where("valuation_assignments_count > 0 AND valuation_finished = ?", false) }
scope :valuation_finished, -> { where(valuation_finished: true) }
def description def description
super.try :html_safe super.try :html_safe

View File

@@ -143,6 +143,8 @@ en:
all: All all: All
without_admin: Without assigned admin without_admin: Without assigned admin
without_valuators: Without valuator without_valuators: Without valuator
valuating: Under valuation
valuation_finished: Valuation finished
title: Investment projects for participatory budgeting title: Investment projects for participatory budgeting
admin_assigned: Assigned administrator admin_assigned: Assigned administrator
no_admin_assigned: No admin assigned no_admin_assigned: No admin assigned

View File

@@ -143,6 +143,8 @@ es:
all: Todas all: Todas
without_admin: Sin administrador asignado without_admin: Sin administrador asignado
without_valuators: Sin evaluador without_valuators: Sin evaluador
valuating: En evaluación
valuation_finished: Evaluación finalizada
title: Propuestas de inversión para presupuestos participativos title: Propuestas de inversión para presupuestos participativos
admin_assigned: Administrador asignado admin_assigned: Administrador asignado
no_admin_assigned: Sin admin asignado no_admin_assigned: Sin admin asignado

View File

@@ -80,24 +80,46 @@ feature 'Admin spending proposals' do
expect(page).to_not have_link('All') expect(page).to_not have_link('All')
expect(page).to have_link('Without assigned admin') expect(page).to have_link('Without assigned admin')
expect(page).to have_link('Without valuator') expect(page).to have_link('Without valuator')
expect(page).to have_link('Under valuation')
expect(page).to have_link('Valuation finished')
visit admin_spending_proposals_path(filter: 'without_admin') visit admin_spending_proposals_path(filter: 'without_admin')
expect(page).to_not have_link('Without assigned admin') expect(page).to_not have_link('Without assigned admin')
expect(page).to have_link('All') expect(page).to have_link('All')
expect(page).to have_link('Without valuator') expect(page).to have_link('Without valuator')
expect(page).to have_link('Under valuation')
expect(page).to have_link('Valuation finished')
visit admin_spending_proposals_path(filter: 'without_valuators') visit admin_spending_proposals_path(filter: 'without_valuators')
expect(page).to_not have_link('Without valuator') expect(page).to_not have_link('Without valuator')
expect(page).to have_link('Without assigned admin') expect(page).to have_link('Without assigned admin')
expect(page).to have_link('All') expect(page).to have_link('All')
expect(page).to have_link('Under valuation')
expect(page).to have_link('Valuation finished')
visit admin_spending_proposals_path(filter: 'valuating')
expect(page).to_not have_link('Under valuation')
expect(page).to have_link('All')
expect(page).to have_link('Without assigned admin')
expect(page).to have_link('Without valuator')
expect(page).to have_link('Valuation finished')
visit admin_spending_proposals_path(filter: 'valuation_finished')
expect(page).to_not have_link('Valuation finished')
expect(page).to have_link('All')
expect(page).to have_link('Without assigned admin')
expect(page).to have_link('Without valuator')
expect(page).to have_link('Under valuation')
visit admin_spending_proposals_path(filter: 'all') visit admin_spending_proposals_path(filter: 'all')
expect(page).to_not have_link('All') expect(page).to_not have_link('All')
expect(page).to have_link('Without assigned admin') expect(page).to have_link('Without assigned admin')
expect(page).to have_link('Without valuator') expect(page).to have_link('Without valuator')
expect(page).to have_link('Under valuation')
expect(page).to have_link('Valuation finished')
end end
scenario "Filtering proposals" do scenario "Index filtering by assignment status" do
assigned = create(:spending_proposal, title: "Assigned idea", administrator: create(:administrator)) assigned = create(:spending_proposal, title: "Assigned idea", administrator: create(:administrator))
valuating = create(:spending_proposal, title: "Evaluating...") valuating = create(:spending_proposal, title: "Evaluating...")
valuating.valuators << create(:valuator) valuating.valuators << create(:valuator)
@@ -118,6 +140,28 @@ feature 'Admin spending proposals' do
expect(page).to_not have_content("Evaluating...") expect(page).to_not have_content("Evaluating...")
end end
scenario "Index filtering by valuation status" do
valuating = create(:spending_proposal, title: "Ongoing valuation")
valuated = create(:spending_proposal, title: "Old idea", valuation_finished: true)
valuating.valuators << create(:valuator)
valuated.valuators << create(:valuator)
visit admin_spending_proposals_path(filter: 'all')
expect(page).to have_content("Ongoing valuation")
expect(page).to have_content("Old idea")
visit admin_spending_proposals_path(filter: 'valuating')
expect(page).to have_content("Ongoing valuation")
expect(page).to_not have_content("Old idea")
visit admin_spending_proposals_path(filter: 'valuation_finished')
expect(page).to_not have_content("Ongoing valuation")
expect(page).to have_content("Old idea")
end
scenario 'Show' do scenario 'Show' do
administrator = create(:administrator, user: create(:user, username: 'Ana', email: 'ana@admins.org')) administrator = create(:administrator, user: create(:user, username: 'Ana', email: 'ana@admins.org'))
valuator = create(:valuator, user: create(:user, username: 'Rachel', email: 'rachel@valuators.org')) valuator = create(:valuator, user: create(:user, username: 'Rachel', email: 'rachel@valuators.org'))

View File

@@ -87,6 +87,38 @@ describe SpendingProposal do
expect(without_admin.first).to eq(spending_proposal2) expect(without_admin.first).to eq(spending_proposal2)
end end
end end
describe "valuating" do
it "should return all spending proposals with assigned valuator but valuation not finished" do
spending_proposal1 = create(:spending_proposal)
spending_proposal2 = create(:spending_proposal)
spending_proposal3 = create(:spending_proposal, valuation_finished: true)
spending_proposal2.valuators << create(:valuator)
spending_proposal3.valuators << create(:valuator)
without_admin = SpendingProposal.valuating
expect(without_admin.size).to eq(1)
expect(without_admin.first).to eq(spending_proposal2)
end
end
describe "valuation_finished" do
it "should return all spending proposals with valuation finished" do
spending_proposal1 = create(:spending_proposal)
spending_proposal2 = create(:spending_proposal)
spending_proposal3 = create(:spending_proposal, valuation_finished: true)
spending_proposal2.valuators << create(:valuator)
spending_proposal3.valuators << create(:valuator)
without_admin = SpendingProposal.valuation_finished
expect(without_admin.size).to eq(1)
expect(without_admin.first).to eq(spending_proposal3)
end
end
end end
end end