From 47255175a203ebf2f228b647769a499e5accbf32 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Mon, 9 Sep 2019 09:55:44 +0200 Subject: [PATCH 1/4] fix rake task for linking dossier and groupe_instructeur --- ...20190826153115_link_dossier_and_groupe_instructeur.rake | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/tasks/deployment/20190826153115_link_dossier_and_groupe_instructeur.rake b/lib/tasks/deployment/20190826153115_link_dossier_and_groupe_instructeur.rake index 623e617d0..aeb50123b 100644 --- a/lib/tasks/deployment/20190826153115_link_dossier_and_groupe_instructeur.rake +++ b/lib/tasks/deployment/20190826153115_link_dossier_and_groupe_instructeur.rake @@ -2,9 +2,10 @@ namespace :after_party do desc 'Deployment task: link_dossier_and_groupe_instructeur' task link_dossier_and_groupe_instructeur: :environment do sql = <<~SQL - UPDATE dossiers SET groupe_instructeur_id = groupe_instructeurs.id - FROM dossiers AS d1 INNER JOIN groupe_instructeurs ON groupe_instructeurs.procedure_id = d1.procedure_id - WHERE dossiers.id = d1.id; + UPDATE dossiers AS d1 SET groupe_instructeur_id = g.id + FROM groupe_instructeurs AS g + WHERE g.procedure_id = d1.procedure_id + and d1.groupe_instructeur_id is null; SQL ActiveRecord::Base.connection.execute(sql) From c26da5ec37a42716f604505a1066416b6d4ad1df Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Mon, 9 Sep 2019 11:43:57 +0200 Subject: [PATCH 2/4] mailers: prevent the signature from being auto-linked Some emails clients (Gmail or Mail.app) may turn the signature into a clickable link. This can distract users, and make them think we are a good point of contact (where they should contact their administration or use the website directly instead). --- app/views/layouts/mailers/_signature.html.haml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/layouts/mailers/_signature.html.haml b/app/views/layouts/mailers/_signature.html.haml index f425b70be..82d83f7b1 100644 --- a/app/views/layouts/mailers/_signature.html.haml +++ b/app/views/layouts/mailers/_signature.html.haml @@ -4,4 +4,5 @@ - if defined?(service) && service && service.nom.present? = service.nom - else - L’équipe demarches-simplifiees.fr + -# The WORD JOINER unicode entity prevents email clients from auto-linking the signature + L’équipe demarches-simplifiees⁠.fr From 875313e01eb9b15905c7cd029b344eb0ca4e3b8d Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Mon, 9 Sep 2019 13:41:08 +0200 Subject: [PATCH 3/4] add defaut groupe instructeur to hidden procedure --- ...551_create_default_groupe_instructeur.rake | 6 ++- ...te_default_groupe_instructeur.rake_spec.rb | 45 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 spec/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake_spec.rb diff --git a/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake b/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake index 4e3021da7..df9cfc3f6 100644 --- a/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake +++ b/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake @@ -1,7 +1,11 @@ namespace :after_party do desc 'Deployment task: create_default_groupe_instructeur' task create_default_groupe_instructeur: :environment do - Procedure.find_each do |procedure| + Procedure + .unscoped + .left_outer_joins(:groupe_instructeurs) + .where('groupe_instructeurs.id is null') + .find_each do |procedure| procedure.groupe_instructeurs.create(label: GroupeInstructeur::DEFAULT_LABEL) end diff --git a/spec/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake_spec.rb b/spec/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake_spec.rb new file mode 100644 index 000000000..e6a264564 --- /dev/null +++ b/spec/lib/tasks/deployment/20190819142551_create_default_groupe_instructeur.rake_spec.rb @@ -0,0 +1,45 @@ +describe '20190819142551_create_default_groupe_instructeur.rake' do + let(:rake_task) { Rake::Task['after_party:create_default_groupe_instructeur'] } + + subject { rake_task.invoke } + after { rake_task.reenable } + + context 'with a procedure without gi' do + let!(:procedure_without_gi) { create(:procedure) } + + before do + procedure_without_gi.groupe_instructeurs.destroy_all + end + + it do + expect(procedure_without_gi.groupe_instructeurs).to be_empty + subject + expect(procedure_without_gi.reload.groupe_instructeurs.pluck(:label)).to eq(['défaut']) + end + end + + context 'with a procedure hidden without gi' do + let!(:procedure_hidden_without_gi) { create(:procedure, :hidden) } + + before do + procedure_hidden_without_gi.groupe_instructeurs.destroy_all + end + + it do + expect(procedure_hidden_without_gi.groupe_instructeurs).to be_empty + subject + expect(procedure_hidden_without_gi.reload.groupe_instructeurs.pluck(:label)).to eq(['défaut']) + end + end + + context 'with a procedure with a gi' do + let!(:procedure_with_gi) { create(:procedure) } + + it do + gi = procedure_with_gi.groupe_instructeurs.first + expect(gi).to be_present + subject + expect(procedure_with_gi.reload.groupe_instructeurs).to eq([gi]) + end + end +end From b9f35a9763d234a785dd04d71b692f28e60b0590 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Mon, 9 Sep 2019 14:08:09 +0200 Subject: [PATCH 4/4] ensure that the task is idempotent --- ...assign_and_groupe_instructeur.rake_spec.rb | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 spec/lib/tasks/deployment/20190819145528_link_assign_and_groupe_instructeur.rake_spec.rb diff --git a/spec/lib/tasks/deployment/20190819145528_link_assign_and_groupe_instructeur.rake_spec.rb b/spec/lib/tasks/deployment/20190819145528_link_assign_and_groupe_instructeur.rake_spec.rb new file mode 100644 index 000000000..01dc3a8c7 --- /dev/null +++ b/spec/lib/tasks/deployment/20190819145528_link_assign_and_groupe_instructeur.rake_spec.rb @@ -0,0 +1,36 @@ +describe '20190819145528_link_assign_and_groupe_instructeur.rake' do + let(:rake_task) { Rake::Task['after_party:link_assign_and_groupe_instructeur'] } + + subject { rake_task.invoke } + after { rake_task.reenable } + + context 'with an assign_to without groupe_instructeur' do + let!(:procedure) { create(:procedure) } + let!(:instructeur) { create(:instructeur) } + let!(:assign_to) do + at = AssignTo.create!(instructeur: instructeur) + at.update_column(:procedure_id, procedure.id) + at + end + + it 'assigns its defaut groupe instructeur' do + expect(assign_to.groupe_instructeur).to be_nil + subject + expect(assign_to.reload.groupe_instructeur).to eq(procedure.defaut_groupe_instructeur) + end + end + + context 'with an assign_to with groupe_instructeur' do + let!(:procedure) { create(:procedure) } + let!(:instructeur) { create(:instructeur, groupe_instructeurs: [procedure.defaut_groupe_instructeur]) } + let!(:assign_to) { instructeur.assign_to.first } + + it 'assigns its defaut groupe instructeur' do + expect(assign_to.groupe_instructeur).to eq(procedure.defaut_groupe_instructeur) + expect(procedure.reload.defaut_groupe_instructeur.assign_tos.count).to eq(1) + subject + expect(instructeur.assign_to).to eq([assign_to]) + expect(procedure.reload.defaut_groupe_instructeur.assign_tos.count).to eq(1) + end + end +end