diff --git a/app/controllers/concerns/create_avis_concern.rb b/app/controllers/concerns/create_avis_concern.rb index adc7ef4b9..b1a55510c 100644 --- a/app/controllers/concerns/create_avis_concern.rb +++ b/app/controllers/concerns/create_avis_concern.rb @@ -4,6 +4,11 @@ module CreateAvisConcern private def create_avis_from_params(dossier, instructeur_or_expert, confidentiel = false) + if create_avis_params[:emails].empty? + flash.alert = t('activerecord.errors.models.email.empty') + return Avis.new(create_avis_params) + end + confidentiel ||= create_avis_params[:confidentiel] # Because of a limitation of the email_field rails helper, # the :emails parameter is a 1-element array. diff --git a/config/locales/models/avis/en.yml b/config/locales/models/avis/en.yml index a8f646f9a..b98f6e414 100644 --- a/config/locales/models/avis/en.yml +++ b/config/locales/models/avis/en.yml @@ -7,6 +7,10 @@ en: answer: "Answer" claimant: Claimant confidentiel: Confidential + errors: + models: + email: + empty: Email field can not be empty helpers: label: invite_linked_dossiers: diff --git a/config/locales/models/avis/fr.yml b/config/locales/models/avis/fr.yml index 9dd09a4c9..527b82e1d 100644 --- a/config/locales/models/avis/fr.yml +++ b/config/locales/models/avis/fr.yml @@ -7,6 +7,10 @@ fr: answer: "Réponse" claimant: Demandeur confidentiel: confidentiel + errors: + models: + email: + empty: Le champ email ne peut pas être vide helpers: label: invite_linked_dossiers: diff --git a/spec/controllers/instructeurs/dossiers_controller_spec.rb b/spec/controllers/instructeurs/dossiers_controller_spec.rb index cdcdf1398..580f02b5f 100644 --- a/spec/controllers/instructeurs/dossiers_controller_spec.rb +++ b/spec/controllers/instructeurs/dossiers_controller_spec.rb @@ -628,6 +628,17 @@ describe Instructeurs::DossiersController, type: :controller do it { expect(dossier.last_avis_updated_at).to eq(nil) } end + context "with no email" do + let(:emails) { "" } + + before { subject } + + it { expect(response).to render_template :avis } + it { expect(flash.alert).to eq("Le champ email ne peut pas être vide") } + it { expect { subject }.not_to change(Avis, :count) } + it { expect(dossier.last_avis_updated_at).to eq(nil) } + end + context 'with multiple emails' do let(:emails) { "[\"toto.fr\",\"titi@titimail.com\"]" }