[Fix #1479] Validate Avis email format
This commit is contained in:
parent
247526578c
commit
38e1609d73
3 changed files with 28 additions and 2 deletions
|
@ -3,6 +3,8 @@ class Avis < ApplicationRecord
|
||||||
belongs_to :gestionnaire
|
belongs_to :gestionnaire
|
||||||
belongs_to :claimant, class_name: 'Gestionnaire'
|
belongs_to :claimant, class_name: 'Gestionnaire'
|
||||||
|
|
||||||
|
validates :email, format: { with: Devise.email_regexp, message: "n'est pas valide" }, allow_nil: true
|
||||||
|
|
||||||
before_save :clean_email
|
before_save :clean_email
|
||||||
before_create :try_to_assign_gestionnaire
|
before_create :try_to_assign_gestionnaire
|
||||||
after_create :notify_gestionnaire
|
after_create :notify_gestionnaire
|
||||||
|
|
|
@ -108,6 +108,16 @@ describe NewGestionnaire::AvisController, type: :controller do
|
||||||
post :create_avis, params: { id: previous_avis.id, avis: { email: email, introduction: intro, confidentiel: asked_confidentiel } }
|
post :create_avis, params: { id: previous_avis.id, avis: { email: email, introduction: intro, confidentiel: asked_confidentiel } }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when an invalid email' do
|
||||||
|
let(:previous_avis_confidentiel) { false }
|
||||||
|
let(:asked_confidentiel) { false }
|
||||||
|
let(:email) { "toto.fr" }
|
||||||
|
|
||||||
|
it { expect(response).to render_template :instruction }
|
||||||
|
it { expect(flash.alert).to eq(["Email n'est pas valide"]) }
|
||||||
|
it { expect(Avis.last).to eq(previous_avis) }
|
||||||
|
end
|
||||||
|
|
||||||
context 'when the previous avis is public' do
|
context 'when the previous avis is public' do
|
||||||
let(:previous_avis_confidentiel) { false }
|
let(:previous_avis_confidentiel) { false }
|
||||||
|
|
||||||
|
|
|
@ -337,20 +337,34 @@ describe NewGestionnaire::DossiersController, type: :controller do
|
||||||
describe "#create_avis" do
|
describe "#create_avis" do
|
||||||
let(:saved_avis) { dossier.avis.first }
|
let(:saved_avis) { dossier.avis.first }
|
||||||
|
|
||||||
before do
|
subject do
|
||||||
post :create_avis, params: {
|
post :create_avis, params: {
|
||||||
procedure_id: procedure.id,
|
procedure_id: procedure.id,
|
||||||
dossier_id: dossier.id,
|
dossier_id: dossier.id,
|
||||||
avis: { email: 'email@a.com', introduction: 'intro', confidentiel: true }
|
avis: { email: email, introduction: 'intro', confidentiel: true }
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:email) { 'email@a.com' }
|
||||||
|
|
||||||
it { expect(saved_avis.email).to eq('email@a.com') }
|
it { expect(saved_avis.email).to eq('email@a.com') }
|
||||||
it { expect(saved_avis.introduction).to eq('intro') }
|
it { expect(saved_avis.introduction).to eq('intro') }
|
||||||
it { expect(saved_avis.confidentiel).to eq(true) }
|
it { expect(saved_avis.confidentiel).to eq(true) }
|
||||||
it { expect(saved_avis.dossier).to eq(dossier) }
|
it { expect(saved_avis.dossier).to eq(dossier) }
|
||||||
it { expect(saved_avis.claimant).to eq(gestionnaire) }
|
it { expect(saved_avis.claimant).to eq(gestionnaire) }
|
||||||
it { expect(response).to redirect_to(avis_gestionnaire_dossier_path(dossier.procedure, dossier)) }
|
it { expect(response).to redirect_to(avis_gestionnaire_dossier_path(dossier.procedure, dossier)) }
|
||||||
|
|
||||||
|
context "with an invalid email" do
|
||||||
|
let(:email) { 'emaila.com' }
|
||||||
|
|
||||||
|
it { expect(response).to render_template :avis }
|
||||||
|
it { expect(flash.alert).to eq(["Email n'est pas valide"]) }
|
||||||
|
it { expect { subject }.not_to change(Avis, :count) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#update_annotations" do
|
describe "#update_annotations" do
|
||||||
|
|
Loading…
Reference in a new issue