diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index b0c6a0a46..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? + 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? + if @process.proposals_phase.started? || (current_user && current_user.administrator?) legislation_proposal_votes(@proposals) render :proposals else 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 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 f8bd9f09c..92a78499d 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, :upcoming_proposals_phase) + + 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, :in_proposals_phase) + + 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