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:
@@ -6,7 +6,7 @@ class Admin::Poll::QuestionsController < Admin::Poll::BaseController
|
|||||||
load_and_authorize_resource :question, class: "Poll::Question"
|
load_and_authorize_resource :question, class: "Poll::Question"
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@polls = Poll.all
|
@polls = Poll.not_budget
|
||||||
@search = search_params[:search]
|
@search = search_params[:search]
|
||||||
|
|
||||||
@questions = @questions.search(search_params).page(params[:page]).order("created_at DESC")
|
@questions = @questions.search(search_params).page(params[:page]).order("created_at DESC")
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class Poll < ActiveRecord::Base
|
|||||||
scope :published, -> { where("published = ?", true) }
|
scope :published, -> { where("published = ?", true) }
|
||||||
scope :by_geozone_id, ->(geozone_id) { where(geozones: {id: geozone_id}.joins(:geozones)) }
|
scope :by_geozone_id, ->(geozone_id) { where(geozones: {id: geozone_id}.joins(:geozones)) }
|
||||||
scope :public_for_api, -> { all }
|
scope :public_for_api, -> { all }
|
||||||
|
scope :not_budget, -> { where(budget_id: nil) }
|
||||||
|
|
||||||
scope :sort_for_list, -> { order(:geozone_restricted, :starts_at, :name) }
|
scope :sort_for_list, -> { order(:geozone_restricted, :starts_at, :name) }
|
||||||
|
|
||||||
|
|||||||
22
spec/features/budget_polls/questions_spec.rb
Normal file
22
spec/features/budget_polls/questions_spec.rb
Normal 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
|
||||||
@@ -258,4 +258,24 @@ describe Poll do
|
|||||||
|
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user