diff --git a/app/controllers/instructeurs/dossiers_controller.rb b/app/controllers/instructeurs/dossiers_controller.rb index 5af55767e..b803edcd3 100644 --- a/app/controllers/instructeurs/dossiers_controller.rb +++ b/app/controllers/instructeurs/dossiers_controller.rb @@ -308,6 +308,8 @@ module Instructeurs def aasm_error_message(exception, target_state:) if exception.originating_state == target_state "Le dossier est déjà #{dossier_display_state(target_state, lower: true)}." + elsif exception.failures.include?(:can_terminer?) + "Les données relatives au SIRET de ce dossier n’ont pas pu encore être vérifiées : il n’est pas possible de le passer #{dossier_display_state(target_state, lower: true)}." else "Le dossier est en ce moment #{dossier_display_state(exception.originating_state, lower: true)} : il n’est pas possible de le passer #{dossier_display_state(target_state, lower: true)}." end diff --git a/spec/controllers/instructeurs/dossiers_controller_spec.rb b/spec/controllers/instructeurs/dossiers_controller_spec.rb index 6ca62a095..4fd5e330d 100644 --- a/spec/controllers/instructeurs/dossiers_controller_spec.rb +++ b/spec/controllers/instructeurs/dossiers_controller_spec.rb @@ -388,6 +388,24 @@ describe Instructeurs::DossiersController, type: :controller do end end + context 'when related etablissement is still in degraded_mode' do + let(:procedure) { create(:procedure, :published, for_individual: false, instructeurs: instructeurs) } + let(:dossier) { create(:dossier, :en_instruction, :with_entreprise, procedure: procedure, as_degraded_mode: true) } + + subject { post :terminer, params: { process_action: "accepter", procedure_id: procedure.id, dossier_id: dossier.id }, format: :turbo_stream } + + context "with accepter" do + it 'warns about the error' do + subject + dossier.reload + expect(dossier.state).to eq(Dossier.states.fetch(:en_instruction)) + + expect(response).to have_http_status(:ok) + expect(response.body).to match(/Les données relatives au SIRET .+ de le passer accepté/) + end + end + end + context 'when a dossier is already closed' do let(:dossier) { create(:dossier, :accepte, procedure: procedure) }