From 77101208a46dd10692d4bc4fd58e1dbaf326390c Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Tue, 12 May 2020 17:58:00 +0200 Subject: [PATCH] Anonymisation de l'instructeur dans la messagerie --- app/models/commentaire.rb | 6 ++++- spec/models/commentaire_spec.rb | 15 +++++++++-- .../messages/message.html.haml_spec.rb | 27 +++++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/app/models/commentaire.rb b/app/models/commentaire.rb index 7d4a520ae..90ad80582 100644 --- a/app/models/commentaire.rb +++ b/app/models/commentaire.rb @@ -34,7 +34,11 @@ class Commentaire < ApplicationRecord def redacted_email if instructeur.present? - instructeur.email.split('@').first + if Flipper.enabled?(:hide_instructeur_email, dossier.procedure) + "Instructeur n° #{instructeur.id}" + else + instructeur.email.split('@').first + end else email end diff --git a/spec/models/commentaire_spec.rb b/spec/models/commentaire_spec.rb index 703a0def4..c38a0f3d8 100644 --- a/spec/models/commentaire_spec.rb +++ b/spec/models/commentaire_spec.rb @@ -44,11 +44,22 @@ describe Commentaire do describe "#redacted_email" do subject { commentaire.redacted_email } + let(:procedure) { create(:procedure) } + let(:dossier) { create(:dossier, procedure: procedure) } + context 'with a commentaire created by a instructeur' do - let(:commentaire) { build :commentaire, instructeur: instructeur } + let(:commentaire) { build :commentaire, instructeur: instructeur, dossier: dossier } let(:instructeur) { build :instructeur, email: 'some_user@exemple.fr' } - it { is_expected.to eq 'some_user' } + context 'when the procedure shows instructeurs email' do + before { Flipper.disable(:hide_instructeur_email, procedure) } + it { is_expected.to eq 'some_user' } + end + + context 'when the procedure hides instructeurs email' do + before { Flipper.enable(:hide_instructeur_email, procedure) } + it { is_expected.to eq "Instructeur n° #{instructeur.id}" } + end end context 'with a commentaire created by a user' do diff --git a/spec/views/shared/dossiers/messages/message.html.haml_spec.rb b/spec/views/shared/dossiers/messages/message.html.haml_spec.rb index e5674ae6b..010de240a 100644 --- a/spec/views/shared/dossiers/messages/message.html.haml_spec.rb +++ b/spec/views/shared/dossiers/messages/message.html.haml_spec.rb @@ -20,4 +20,31 @@ describe 'shared/dossiers/messages/message.html.haml', type: :view do it { is_expected.to have_css(".highlighted") } end + + context 'with an instructeur message' do + let(:instructeur) { create(:instructeur) } + let(:procedure) { create(:procedure) } + let(:commentaire) { create(:commentaire, instructeur: instructeur, body: 'Second message') } + let(:dossier) { create(:dossier, :en_construction, commentaires: [commentaire], procedure: procedure) } + + context 'on a procedure with anonymous instructeurs' do + before { Flipper.enable_actor(:hide_instructeur_email, procedure) } + + context 'redacts the instructeur email' do + it { is_expected.to have_text(commentaire.body) } + it { is_expected.to have_text("Instructeur n° #{instructeur.id}") } + it { is_expected.not_to have_text(instructeur.email) } + end + end + + context 'on a procedure where instructeurs names are not redacted' do + before { Flipper.disable_actor(:hide_instructeur_email, procedure) } + + context 'redacts the instructeur email but keeps the name' do + it { is_expected.to have_text(commentaire.body) } + it { is_expected.to have_text(instructeur.email.split('@').first) } + it { is_expected.not_to have_text(instructeur.email) } + end + end + end end