amelioration(attestion.et.mail): deduplique les message d'erreur, améliore les messages d'erreur, gère la pluralisation des erreurs lorsque plusieurs tags sont concernés

This commit is contained in:
Martin 2022-12-16 14:56:46 +01:00 committed by mfo
parent dd74834689
commit 2be4441a70
17 changed files with 129 additions and 82 deletions

View file

@ -61,6 +61,10 @@
width: 5px;
}
.list-style-type-none {
list-style-type: none;
}
.empty-text {
font-size: 20px;
font-weight: bold;

View file

@ -4,7 +4,8 @@
input,
textarea,
select,
.procedure-form__column--form .fr-input { //FIXME when DSFR is DONE
// FIXME when DSFR is DONE
.form-ds-fr-white .fr-input {
background: $white;
font-size: 1em;
}

View file

@ -7,8 +7,8 @@
- if error_messages.size == 1
%p.fr-error-text{ id: error_message_id }= error_messages.first
- else
%div.fr-error-text{ id: error_message_id }
%ul
.fr-error-text{ id: error_message_id }
%ul.list-style-type-none.fr-pl-0
- error_messages.map do |error_message|
%li= error_message

View file

@ -18,7 +18,7 @@ module Administrateurs
redirect_to edit_admin_procedure_attestation_template_path(@procedure)
else
flash.now.alert = "Le modèle de lattestation contient des erreurs et n'a pas pu être enregistré, veuillez les corriger."
flash.now.alert = "Le modèle de lattestation contient des erreurs et n'a pas pu être enregistré. Veuiller les corriger"
render :edit
end

View file

@ -25,7 +25,7 @@ module Administrateurs
flash.notice = "Email mis à jour"
redirect_to edit_admin_procedure_mail_template_path(mail_template.procedure_id, params[:id])
else
flash.now.alert = "Lemail contient des erreurs et na pas pu être enregistré, veuillez les corriger."
flash.now.alert = "Lemail contient des erreurs et na pas pu être enregistré. Veuiller les corriger"
mail_template.rich_body = mail_template.body
@mail_template = mail_template

View file

@ -43,8 +43,8 @@ class TagsValidator < ActiveModel::EachValidator
private
def add_errors(record, attribute, message, tags)
tags.each do |tag|
record.errors.add(attribute, message, tag: tag)
if tags.present?
record.errors.add(attribute, message, count: tags.size, tags: tags.join(', '))
end
end

View file

@ -9,7 +9,7 @@
.procedure-form__columns.container
= form_for @attestation_template,
url: admin_procedure_attestation_template_path(@procedure),
html: { multipart: true, class: 'form procedure-form__column--form' } do |f|
html: { multipart: true, class: 'form form-ds-fr-white procedure-form__column--form' } do |f|
%h1.page-title
Délivrance dattestation

View file

@ -14,7 +14,7 @@
= form_for @mail_template,
url: admin_procedure_mail_template_path(@procedure, @mail_template.class.const_get(:SLUG)),
method: :put,
html: { class: 'form procedure-form__column--form' } do |f|
html: { class: 'form form-ds-fr-white procedure-form__column--form' } do |f|
%h1.page-title= @mail_template.class.const_get(:DISPLAYED_NAME)
= render partial: 'form', locals: { f: f, tags: @mail_template.tags }

View file

@ -7,21 +7,30 @@ fr:
title: Titre de lattestation
body: Contenu de lattestation
footer: Pied de page
errors:
models:
attestation_template:
tags_errors: &tags_errors
champ_missing:
one: contient la balise "%{tags}" qui nexiste pas. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas. Supprimer les balises
champ_missing_in_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ont été supprimées mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_revision:
one: contient la balise "%{tags}" qui nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ne sont pas encore publiées. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_and_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée. Supprimer la balise
other: contient %{count} balises (%{tags}) qui ont été supprimées. Supprimer les balises
champ_missing_in_previous_revision:
one: contient la balise "%{tags}" qui nexiste pas sur un des dossiers en cours de traitement. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas sur un des dossiers en cours de traitement. Supprimer les balises
attributes:
title:
format: Le titre de lattestation %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Titre de lattestation » %{message}
<<: *tags_errors
body:
format: Le contenu de lattestation %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Contenu de lattestation » %{message}
<<: *tags_errors

View file

@ -7,18 +7,26 @@ fr:
errors:
models:
mails/closed_mail:
tags_errors: &tags_errors
champ_missing:
one: contient la balise "%{tags}" qui nexiste pas. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas. Supprimer les balises
champ_missing_in_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ont été supprimées mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_revision:
one: contient la balise "%{tags}" qui nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ne sont pas encore publiées. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_and_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée. Supprimer la balise
other: contient %{count} balises (%{tags}) qui ont été supprimées. Supprimer les balises
champ_missing_in_previous_revision:
one: contient la balise "%{tags}" qui nexiste pas sur un des dossiers en cours de traitement. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas sur un des dossiers en cours de traitement. Supprimer les balises
attributes:
subject:
format: Lobjet de lemail %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Objet de lemail » %{message}
<<: *tags_errors
body:
format: Le corps de lemail %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Corps de lemail » %{message}
<<: *tags_errors

View file

@ -7,18 +7,26 @@ fr:
errors:
models:
mails/initiated_mail:
tags_errors: &tags_errors
champ_missing:
one: contient la balise "%{tags}" qui nexiste pas. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas. Supprimer les balises
champ_missing_in_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ont été supprimées mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_revision:
one: contient la balise "%{tags}" qui nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ne sont pas encore publiées. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_and_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée. Supprimer la balise
other: contient %{count} balises (%{tags}) qui ont été supprimées. Supprimer les balises
champ_missing_in_previous_revision:
one: contient la balise "%{tags}" qui nexiste pas sur un des dossiers en cours de traitement. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas sur un des dossiers en cours de traitement. Supprimer les balises
attributes:
subject:
format: Lobjet de lemail %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Objet de lemail » %{message}
<<: *tags_errors
body:
format: Le corps de lemail %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimé mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publié.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimé.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Corps de lemail » %{message}
<<: *tags_errors

View file

@ -7,18 +7,26 @@ fr:
errors:
models:
mails/received_mail:
tags_errors: &tags_errors
champ_missing:
one: contient la balise "%{tags}" qui nexiste pas. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas. Supprimer les balises
champ_missing_in_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ont été supprimées mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_revision:
one: contient la balise "%{tags}" qui nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ne sont pas encore publiées. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_and_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée. Supprimer la balise
other: contient %{count} balises (%{tags}) qui ont été supprimées. Supprimer les balises
champ_missing_in_previous_revision:
one: contient la balise "%{tags}" qui nexiste pas sur un des dossiers en cours de traitement. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas sur un des dossiers en cours de traitement. Supprimer les balises
attributes:
subject:
format: Lobjet de lemail lemail %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Objet de lemail » %{message}
<<: *tags_errors
body:
format: Le corps de lemail %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Corps de lemail » %{message}
<<: *tags_errors

View file

@ -7,18 +7,26 @@ fr:
errors:
models:
mails/refused_mail:
tags_errors: &tags_errors
champ_missing:
one: contient la balise "%{tags}" qui nexiste pas. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas. Supprimer les balises
champ_missing_in_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ont été supprimées mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_revision:
one: contient la balise "%{tags}" qui nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer
other: contient %{count} balises (%{tags}) qui ne sont pas encore publiées. Publier la nouvelle version de la démarche et recommencer
champ_missing_in_published_and_draft_revision:
one: contient la balise "%{tags}" qui a été supprimée. Supprimer la balise
other: contient %{count} balises (%{tags}) qui ont été supprimées. Supprimer les balises
champ_missing_in_previous_revision:
one: contient la balise "%{tags}" qui nexiste pas sur un des dossiers en cours de traitement. Supprimer la balise
other: contient %{count} balises (%{tags}) qui nexistent pas sur un des dossiers en cours de traitement. Supprimer les balises
attributes:
subject:
format: Lobjet de lemail %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Objet de lemail » %{message}
<<: *tags_errors
body:
format: Le contenu de lemail de notification de refus de dossier %{message}
champ_missing: contient la balise "%{tag}" qui nexiste pas, veuillez la supprimer.
champ_missing_in_draft_revision: contient la balise "%{tag}" qui a été supprimée mais la suppression nest pas encore publiée.
champ_missing_in_published_revision: contient la balise "%{tag}" qui nest pas encore publiée.
champ_missing_in_published_and_draft_revision: contient la balise "%{tag}" qui a été supprimée.
champ_missing_in_previous_revision: contient la balise "%{tag}" qui nexiste pas sur un des dossiers en cours de traitement.
format: Le champ « Corps de lemail » %{message}
<<: *tags_errors

View file

@ -180,7 +180,7 @@ describe Administrateurs::AttestationTemplatesController, type: :controller do
expect(procedure.attestation_template.logo.download).to eq(logo2.read)
expect(procedure.attestation_template.signature.download).to eq(signature2.read)
expect(response).to redirect_to edit_admin_procedure_attestation_template_path(procedure)
expect(flash.notice).to eq("Le modèle de lattestation a bien été modifiée")
expect(flash.notice).to eq("Le modèle de lattestation a bien été modifié")
end
end
@ -233,32 +233,33 @@ describe Administrateurs::AttestationTemplatesController, type: :controller do
context 'with invalid tag' do
let(:body) { 'body --yolo--' }
it { expect(flash.alert).to eq("Le modèle de lattestation contient des erreurs et n'a pas pu être enregistré, veuillez les corriger.") }
it { expect(flash.alert).to eq("Le modèle de lattestation contient des erreurs et n'a pas pu être enregistré. Veuiller les corriger") }
end
context 'with removed champ' do
render_views
let(:body) { "body --#{removed_type_de_champ.libelle}--" }
it { expect(response.body).to have_content("Le contenu de lattestation contient la balise \"#{removed_type_de_champ.libelle}\" qui a été supprimée mais la suppression nest pas encore publiée.") }
it { expect(response.body).to have_content("Le champ « Contenu de lattestation » contient la balise \"#{removed_type_de_champ.libelle}\" qui a été supprimée mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer") }
end
context 'with removed and published' do
render_views
let(:body) { "body --#{removed_and_published_type_de_champ.libelle}--" }
it { expect(response.body).to have_content("Le contenu de lattestation contient la balise \"#{removed_and_published_type_de_champ.libelle}\" qui a été supprimée.") }
it { expect(response.body).to have_content("Le champ « Contenu de lattestation » contient la balise \"#{removed_and_published_type_de_champ.libelle}\" qui a été supprimée.") }
end
context 'with new champ missing on dossier submitted on previous revision' do
render_views
let(:dossier) { create(:dossier, :en_construction, procedure: procedure, revision: procedure.revisions.first) }
let(:body) { "body --#{new_type_de_champ.libelle}--" }
it { expect(response.body).to have_content("Le contenu de lattestation contient la balise \"#{new_type_de_champ.libelle}\" qui nexiste pas sur un des dossiers en cours de traitement") }
it { expect(response.body).to have_content("Le champ « Contenu de lattestation » contient la balise \"#{new_type_de_champ.libelle}\" qui nexiste pas sur un des dossiers en cours de traitement") }
end
context 'with champ on draft' do
render_views
let(:body) { "body --#{draft_type_de_champ.libelle}--" }
it { expect(response.body).to have_content("Le contenu de lattestation contient la balise \"#{draft_type_de_champ.libelle}\" qui nest pas encore publiée") }
it { expect(response.body).to have_content("Le champ « Contenu de lattestation » contient la balise \"#{draft_type_de_champ.libelle}\" qui nest pas encore publiée") }
end
end
end

View file

@ -73,7 +73,7 @@ describe Administrateurs::MailTemplatesController, type: :controller do
it do
expect(subject.body).not_to eq(mail_body)
expect(response.body).to match("Le corps de lemail contient la balise &quot;numéro&quot; qui nexiste pas, veuillez la supprimer.")
expect(response.body).to match("Le champ « Corps de lemail » contient la balise &quot;numéro&quot; qui nexiste pas. Supprimer la balise")
end
end
end

View file

@ -38,7 +38,7 @@ describe Mails::InitiatedMail, type: :model do
context 'template with invalid tag' do
let(:email_body) { 'foo --numéro du -- bar' }
it { expect(subject.errors.full_messages).to eq(["Le corps de lemail contient la balise \"numéro du\" qui nexiste pas, veuillez la supprimer."]) }
it { expect(subject.errors.full_messages).to eq(["Le champ « Corps de lemail » contient la balise \"numéro du\" qui nexiste pas. Supprimer la balise"]) }
end
context 'template with unpublished tag' do
@ -48,7 +48,7 @@ describe Mails::InitiatedMail, type: :model do
procedure.draft_revision.add_type_de_champ(type_champ: :integer_number, libelle: 'age')
end
it { expect(subject.errors.full_messages).to eq(["Le corps de lemail contient la balise \"age\" qui nest pas encore publié."]) }
it { expect(subject.errors.full_messages).to eq(["Le champ « Corps de lemail » contient la balise \"age\" qui nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer"]) }
end
context 'template with removed but unpublished tag' do
@ -58,7 +58,7 @@ describe Mails::InitiatedMail, type: :model do
procedure.draft_revision.remove_type_de_champ(type_de_champ.stable_id)
end
it { expect(subject.errors.full_messages).to eq(["Le corps de lemail contient la balise \"nom\" qui a été supprimé mais la suppression nest pas encore publiée."]) }
it { expect(subject.errors.full_messages).to eq(["Le champ « Corps de lemail » contient la balise \"nom\" qui a été supprimée mais la suppression nest pas encore publiée. Publier la nouvelle version de la démarche et recommencer"]) }
end
context 'template with removed tag' do
@ -69,7 +69,7 @@ describe Mails::InitiatedMail, type: :model do
procedure.publish_revision!
end
it { expect(subject.errors.full_messages).to eq(["Le corps de lemail contient la balise \"nom\" qui a été supprimé."]) }
it { expect(subject.errors.full_messages).to eq(["Le champ « Corps de lemail » contient la balise \"nom\" qui a été supprimée. Supprimer la balise"]) }
end
context 'template with new tag and old dossier' do
@ -81,7 +81,7 @@ describe Mails::InitiatedMail, type: :model do
procedure.publish_revision!
end
it { expect(subject.errors.full_messages).to eq(["Le corps de lemail contient la balise \"age\" qui nexiste pas sur un des dossiers en cours de traitement."]) }
it { expect(subject.errors.full_messages).to eq(["Le champ « Corps de lemail » contient la balise \"age\" qui nexiste pas sur un des dossiers en cours de traitement. Supprimer la balise"]) }
end
end
end

View file

@ -30,7 +30,7 @@ describe 'As an administrateur, I want to manage the procedures attestation',
# now process to enable attestation
find_attestation_card.click
fill_in "Titre de lattestation", with: 'BOOM'
fill_in "Contenu de l'attestation", with: 'BOOM'
fill_in "Contenu de lattestation", with: 'BOOM'
find('.toggle-switch-control').click
click_on 'Enregistrer'