From 9c13f08c8e3602e0702eeec02b6d8d3b39e55f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Wed, 26 Sep 2018 13:48:34 +0200 Subject: [PATCH] Show selected legislation proposals by default --- .../legislation/processes_controller.rb | 2 + spec/features/legislation/proposals_spec.rb | 48 ++++++++++++++----- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index bde762666..f05d2fdda 100644 --- a/app/controllers/legislation/processes_controller.rb +++ b/app/controllers/legislation/processes_controller.rb @@ -93,6 +93,8 @@ class Legislation::ProcessesController < Legislation::BaseController @proposals = ::Legislation::Proposal.where(process: @process) @proposals = @proposals.search(params[:search]) if params[:search].present? + + @current_filter = "winners" if params[:filter].blank? && @proposals.winners.any? @proposals = @proposals.send(@current_filter).page(params[:page]) if @process.proposals_phase.started? || (current_user && current_user.administrator?) diff --git a/spec/features/legislation/proposals_spec.rb b/spec/features/legislation/proposals_spec.rb index d89a381f1..a153bea1d 100644 --- a/spec/features/legislation/proposals_spec.rb +++ b/spec/features/legislation/proposals_spec.rb @@ -64,23 +64,47 @@ feature 'Legislation Proposals' do expect(legislation_proposals_order).to eq(first_page_proposals_order) end - scenario 'Selected filter apperars even if there are not any selected poposals' do - create(:legislation_proposal, legislation_process_id: process.id) + context 'Selected filter' do + scenario 'apperars even if there are not any selected poposals' do + create(:legislation_proposal, legislation_process_id: process.id) - visit legislation_process_proposals_path(process) + visit legislation_process_proposals_path(process) - expect(page).to have_content('Selected') - end + expect(page).to have_content('Selected') + end - scenario 'Selected filter works correctly' do - proposal1 = create(:legislation_proposal, legislation_process_id: process.id) - proposal2 = create(:legislation_proposal, legislation_process_id: process.id, selected: true) - visit legislation_process_proposals_path(process) + scenario 'defaults to winners if there are selected proposals' do + create(:legislation_proposal, legislation_process_id: process.id) + create(:legislation_proposal, legislation_process_id: process.id, selected: true) - click_link 'Selected' + visit legislation_process_proposals_path(process) - expect(page).to have_css("div#legislation_proposal_#{proposal2.id}") - expect(page).not_to have_css("div#legislation_proposal_#{proposal1.id}") + expect(page).to have_link('Random') + expect(page).not_to have_link('Selected') + expect(page).to have_content('Selected') + end + + scenario 'defaults to random if the current process does not have selected proposals' do + create(:legislation_proposal, legislation_process_id: process.id) + create(:legislation_proposal, selected: true) + + visit legislation_process_proposals_path(process) + + expect(page).to have_link('Selected') + expect(page).not_to have_link('Random') + expect(page).to have_content('Random') + end + + scenario 'filters correctly' do + proposal1 = create(:legislation_proposal, legislation_process_id: process.id) + proposal2 = create(:legislation_proposal, legislation_process_id: process.id, selected: true) + visit legislation_process_proposals_path(process, filter: "random") + + click_link 'Selected' + + expect(page).to have_css("div#legislation_proposal_#{proposal2.id}") + expect(page).not_to have_css("div#legislation_proposal_#{proposal1.id}") + end end def legislation_proposals_order