From 6d5e1a075ec71f9392c6d8baccb0031b30c469ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Checa?= Date: Sat, 28 Oct 2017 10:36:29 +0200 Subject: [PATCH 1/4] Allow admins to access Legislation::Proposal `#show` and Legislation::Process `#proposals` --- app/models/abilities/administrator.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb index a761f7abc..bdc457bc0 100644 --- a/app/models/abilities/administrator.rb +++ b/app/models/abilities/administrator.rb @@ -14,6 +14,10 @@ module Abilities can :restore, Proposal cannot :restore, Proposal, hidden_at: nil + can :create, Legislation::Proposal + can :show, Legislation::Proposal + can :proposals, ::Legislation::Process + can :restore, Legislation::Proposal cannot :restore, Legislation::Proposal, hidden_at: nil From 056086e81e7aa9d8030b32879cf5a7715247c3fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Checa?= Date: Sat, 28 Oct 2017 11:40:30 +0200 Subject: [PATCH 2/4] Allow admins to see legislation debates and proposals index --- app/controllers/legislation/processes_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index b0c6a0a46..59b002ef0 100644 --- a/app/controllers/legislation/processes_controller.rb +++ b/app/controllers/legislation/processes_controller.rb @@ -27,7 +27,7 @@ class Legislation::ProcessesController < Legislation::BaseController set_process @phase = :debate_phase - if @process.debate_phase.started? + if @process.debate_phase.started? || current_user.administrator? render :debate else render :phase_not_open @@ -90,7 +90,7 @@ class Legislation::ProcessesController < Legislation::BaseController @phase = :proposals_phase @proposals = ::Legislation::Proposal.where(process: @process).order('random()').page(params[:page]) - if @process.proposals_phase.started? + if @process.proposals_phase.started? || current_user.administrator? legislation_proposal_votes(@proposals) render :proposals else From d73be1529625acc5de75d29571dca59cdc477190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Checa?= Date: Tue, 31 Oct 2017 12:24:13 +0100 Subject: [PATCH 3/4] Added tests --- .../legislation/processes_controller.rb | 4 ++-- spec/features/legislation/processes_spec.rb | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index 59b002ef0..a5f1836c2 100644 --- a/app/controllers/legislation/processes_controller.rb +++ b/app/controllers/legislation/processes_controller.rb @@ -27,7 +27,7 @@ class Legislation::ProcessesController < Legislation::BaseController set_process @phase = :debate_phase - if @process.debate_phase.started? || current_user.administrator? + if @process.debate_phase.started? || (current_user && current_user.administrator?) render :debate else render :phase_not_open @@ -90,7 +90,7 @@ class Legislation::ProcessesController < Legislation::BaseController @phase = :proposals_phase @proposals = ::Legislation::Proposal.where(process: @process).order('random()').page(params[:page]) - if @process.proposals_phase.started? || current_user.administrator? + if @process.proposals_phase.started? || (current_user && current_user.administrator?) legislation_proposal_votes(@proposals) render :proposals else diff --git a/spec/features/legislation/processes_spec.rb b/spec/features/legislation/processes_spec.rb index f8bd9f09c..61ade329c 100644 --- a/spec/features/legislation/processes_spec.rb +++ b/spec/features/legislation/processes_spec.rb @@ -237,5 +237,25 @@ feature 'Legislation' do include_examples "not published permissions", :result_publication_legislation_process_path end + + context 'proposals phase' do + scenario 'not open' do + process = create(:legislation_process, proposals_phase_start_date: Date.current + 1.day, proposals_phase_end_date: Date.current + 2.days) + + visit legislation_process_proposals_path(process) + + expect(page).to have_content("This phase is not open yet") + end + + scenario 'open' do + process = create(:legislation_process, proposals_phase_start_date: Date.current - 1.day, proposals_phase_end_date: Date.current + 2.days, proposals_phase_enabled: true) + + visit legislation_process_proposals_path(process) + + expect(page).to have_content("There are no proposals") + end + + include_examples "not published permissions", :legislation_process_proposals_path + end end end From 388c1a9bd982f93f09d58e624c514b11c711b037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Checa?= Date: Tue, 31 Oct 2017 12:44:55 +0100 Subject: [PATCH 4/4] Improved tests --- spec/factories/legislations.rb | 12 ++++++++++++ spec/features/legislation/processes_spec.rb | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/spec/factories/legislations.rb b/spec/factories/legislations.rb index 76dfb020c..526adc39e 100644 --- a/spec/factories/legislations.rb +++ b/spec/factories/legislations.rb @@ -66,6 +66,18 @@ FactoryBot.define do result_publication_date { Date.current + 5.days } end + trait :in_proposals_phase do + proposals_phase_start_date { Date.current - 1.day } + proposals_phase_end_date { Date.current + 2.days } + proposals_phase_enabled true + end + + trait :upcoming_proposals_phase do + proposals_phase_start_date { Date.current + 1.day } + proposals_phase_end_date { Date.current + 2.days } + proposals_phase_enabled true + end + trait :published do published true end diff --git a/spec/features/legislation/processes_spec.rb b/spec/features/legislation/processes_spec.rb index 61ade329c..92a78499d 100644 --- a/spec/features/legislation/processes_spec.rb +++ b/spec/features/legislation/processes_spec.rb @@ -240,7 +240,7 @@ feature 'Legislation' do context 'proposals phase' do scenario 'not open' do - process = create(:legislation_process, proposals_phase_start_date: Date.current + 1.day, proposals_phase_end_date: Date.current + 2.days) + process = create(:legislation_process, :upcoming_proposals_phase) visit legislation_process_proposals_path(process) @@ -248,7 +248,7 @@ feature 'Legislation' do end scenario 'open' do - process = create(:legislation_process, proposals_phase_start_date: Date.current - 1.day, proposals_phase_end_date: Date.current + 2.days, proposals_phase_enabled: true) + process = create(:legislation_process, :in_proposals_phase) visit legislation_process_proposals_path(process)