Ajoute un flag pour qu'un expert ne puisse pas inviter une autre personne à donner son avis sur un dossier
This commit is contained in:
parent
cf08c7c40d
commit
9207cc5aa5
5 changed files with 44 additions and 6 deletions
|
@ -82,6 +82,10 @@ class ApplicationController < ActionController::Base
|
|||
Flipper.enabled?(feature_name, current_user)
|
||||
end
|
||||
|
||||
def feature_enabled_for?(feature_name, item)
|
||||
Flipper.enabled?(feature_name, item)
|
||||
end
|
||||
|
||||
def authenticate_logged_user!
|
||||
if instructeur_signed_in?
|
||||
authenticate_instructeur!
|
||||
|
|
|
@ -71,13 +71,19 @@ module Instructeurs
|
|||
end
|
||||
|
||||
def create_avis
|
||||
@new_avis = create_avis_from_params(avis.dossier, avis.confidentiel)
|
||||
@procedure = Procedure.find(params[:procedure_id])
|
||||
if !feature_enabled_for?(:expert_not_allowed_to_invite, @procedure)
|
||||
@new_avis = create_avis_from_params(avis.dossier, avis.confidentiel)
|
||||
|
||||
if @new_avis.nil?
|
||||
redirect_to instruction_instructeur_avis_path(avis.procedure, avis)
|
||||
if @new_avis.nil?
|
||||
redirect_to instruction_instructeur_avis_path(avis.procedure, avis)
|
||||
else
|
||||
set_avis_and_dossier
|
||||
render :instruction
|
||||
end
|
||||
else
|
||||
set_avis_and_dossier
|
||||
render :instruction
|
||||
flash.alert = "Cette démarche ne vous permet pas de demander un avis externe"
|
||||
redirect_to instruction_instructeur_avis_path(avis.procedure, avis)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
.send-wrapper
|
||||
= f.submit 'Envoyer votre avis', class: 'button send'
|
||||
|
||||
- if !@dossier.termine?
|
||||
- if !@dossier.termine? && !feature_enabled_for?(:expert_not_allowed_to_invite, @avis.procedure)
|
||||
= render partial: "instructeurs/shared/avis/form", locals: { url: avis_instructeur_avis_path(@avis.procedure, @avis), linked_dossiers: @dossier.linked_dossiers_for(current_instructeur), must_be_confidentiel: @avis.confidentiel?, avis: @new_avis }
|
||||
|
||||
- if @dossier.avis_for(current_instructeur).present?
|
||||
|
|
|
@ -152,6 +152,26 @@ describe Instructeurs::AvisController, type: :controller do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#expert_cannot_invite_another_expert' do
|
||||
let!(:previous_avis) { Avis.create(dossier: dossier, claimant: claimant, instructeur: instructeur, confidentiel: previous_avis_confidentiel) }
|
||||
let(:previous_avis_confidentiel) { false }
|
||||
let(:asked_confidentiel) { false }
|
||||
let(:intro) { 'introduction' }
|
||||
let(:emails) { ["toto@totomail.com"] }
|
||||
let(:invite_linked_dossiers) { nil }
|
||||
|
||||
before do
|
||||
Flipper.enable_actor(:expert_not_allowed_to_invite, procedure)
|
||||
post :create_avis, params: { id: previous_avis.id, procedure_id: procedure.id, avis: { emails: emails, introduction: intro, confidentiel: asked_confidentiel, invite_linked_dossiers: invite_linked_dossiers, introduction_file: @introduction_file } }
|
||||
end
|
||||
|
||||
context 'when the expert cannot invite another expert' do
|
||||
let(:asked_confidentiel) { false }
|
||||
it { expect(flash.alert).to eq("Cette démarche ne vous permet pas de demander un avis externe") }
|
||||
it { expect(response).to redirect_to(instruction_instructeur_avis_path(procedure, previous_avis)) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#create_avis' do
|
||||
let!(:previous_avis) { Avis.create(dossier: dossier, claimant: claimant, instructeur: instructeur, confidentiel: previous_avis_confidentiel) }
|
||||
let(:emails) { ['a@b.com'] }
|
||||
|
|
|
@ -20,4 +20,12 @@ describe 'instructeurs/avis/instruction.html.haml', type: :view do
|
|||
let(:confidentiel) { false }
|
||||
it { is_expected.to have_text("Cet avis est partagé avec les autres experts") }
|
||||
end
|
||||
|
||||
context 'when an expert is not allowed to invite another expert' do
|
||||
let(:confidentiel) { false }
|
||||
before do
|
||||
Flipper.enable_actor(:expert_not_allowed_to_invite, avis.procedure)
|
||||
end
|
||||
it { is_expected.to have_no_text("Inviter des personnes à donner leur avis") }
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue