Do not display polls associated to a budget in admin poll questions

This section is used to select to which poll a question belongs to.

Budget polls are not meant to include questions that come from Citizen
Proposals or Government Questions, thus we do not display them
This commit is contained in:
rgarcia
2018-06-07 13:07:52 +02:00
committed by Javi Martín
parent dac0264b63
commit 7dd314c699
4 changed files with 44 additions and 1 deletions

View File

@@ -6,7 +6,7 @@ class Admin::Poll::QuestionsController < Admin::Poll::BaseController
load_and_authorize_resource :question, class: "Poll::Question"
def index
@polls = Poll.all
@polls = Poll.not_budget
@search = search_params[:search]
@questions = @questions.search(search_params).page(params[:page]).order("created_at DESC")

View File

@@ -34,6 +34,7 @@ class Poll < ActiveRecord::Base
scope :published, -> { where("published = ?", true) }
scope :by_geozone_id, ->(geozone_id) { where(geozones: {id: geozone_id}.joins(:geozones)) }
scope :public_for_api, -> { all }
scope :not_budget, -> { where(budget_id: nil) }
scope :sort_for_list, -> { order(:geozone_restricted, :starts_at, :name) }

View File

@@ -0,0 +1,22 @@
require "rails_helper"
feature "Poll Questions" do
before do
admin = create(:administrator).user
login_as(admin)
end
scenario "Do not display polls associated to a budget" do
budget = create(:budget)
poll1 = create(:poll, name: "Citizen Proposal Poll")
poll2 = create(:poll, budget: budget, name: "Participatory Budget Poll")
visit admin_questions_path
expect(page).to have_select("poll_id", text: "Citizen Proposal Poll")
expect(page).not_to have_select("poll_id", text: "Participatory Budget Poll")
end
end

View File

@@ -258,4 +258,24 @@ describe Poll do
end
context "scopes" do
describe "#not_budget" do
it "returns polls not associated to a budget" do
budget = create(:budget)
poll1 = create(:poll)
poll2 = create(:poll)
poll3 = create(:poll, budget: budget)
expect(Poll.not_budget).to include(poll1)
expect(Poll.not_budget).to include(poll2)
expect(Poll.not_budget).not_to include(poll3)
end
end
end
end