fix(graphql): return better errors when dossiers cannot change state
This commit is contained in:
parent
46ce685ad0
commit
a778e1083b
3 changed files with 23 additions and 2 deletions
|
@ -28,7 +28,9 @@ module Mutations
|
||||||
end
|
end
|
||||||
|
|
||||||
def authorized?(dossier:, instructeur:, **args)
|
def authorized?(dossier:, instructeur:, **args)
|
||||||
if !dossier.en_instruction?
|
if dossier.en_instruction? && dossier.any_etablissement_as_degraded_mode?
|
||||||
|
return false, { errors: ["Les informations du SIRET du dossier ne sont pas complètes. Veuillez réessayer plus tard."] }
|
||||||
|
elsif !dossier.en_instruction? || !dossier.can_terminer?
|
||||||
return false, { errors: ["Le dossier est déjà #{dossier_display_state(dossier, lower: true)}"] }
|
return false, { errors: ["Le dossier est déjà #{dossier_display_state(dossier, lower: true)}"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ module Mutations
|
||||||
end
|
end
|
||||||
|
|
||||||
def authorized?(dossier:, instructeur:, **args)
|
def authorized?(dossier:, instructeur:, **args)
|
||||||
if !dossier.termine?
|
if !dossier.can_repasser_en_instruction?
|
||||||
return false, { errors: ["Le dossier est déjà #{dossier_display_state(dossier, lower: true)}"] }
|
return false, { errors: ["Le dossier est déjà #{dossier_display_state(dossier, lower: true)}"] }
|
||||||
end
|
end
|
||||||
dossier_authorized_for?(dossier, instructeur)
|
dossier_authorized_for?(dossier, instructeur)
|
||||||
|
|
|
@ -315,6 +315,25 @@ describe API::V2::GraphqlController do
|
||||||
expect(gql_data[:dossierAccepter][:errors].first[:message]).to eq('Le jeton utilisé est configuré seulement en lecture')
|
expect(gql_data[:dossierAccepter][:errors].first[:message]).to eq('Le jeton utilisé est configuré seulement en lecture')
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when already rejected' do
|
||||||
|
let(:dossier) { create(:dossier, :refuse, :with_individual, procedure:) }
|
||||||
|
|
||||||
|
it {
|
||||||
|
expect(gql_data[:dossierAccepter][:errors].first[:message]).to eq('Le dossier est déjà refusé')
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when in degraded mode' do
|
||||||
|
let(:procedure) { create(:procedure, :published, :with_service, administrateurs: [admin]) }
|
||||||
|
let(:dossier) { create(:dossier, :en_instruction, :with_entreprise, procedure:) }
|
||||||
|
|
||||||
|
before { dossier.etablissement.update(adresse: nil) }
|
||||||
|
|
||||||
|
it {
|
||||||
|
expect(gql_data[:dossierAccepter][:errors].first[:message]).to eq('Les informations du SIRET du dossier ne sont pas complètes. Veuillez réessayer plus tard.')
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'dossierRefuser' do
|
context 'dossierRefuser' do
|
||||||
|
|
Loading…
Reference in a new issue