From 20fd7e52e608f5f2d383c4ebdbecd41dffd22374 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Thu, 29 Mar 2018 14:55:25 +0200 Subject: [PATCH] [Fix #1729] Clean mail templates with tags --- ..._remove_code_tags_from_mail_templates.rake | 18 +++++++++++ ...move_code_tags_from_mail_templates_spec.rb | 31 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake create mode 100644 spec/lib/rake/2018_03_29_remove_code_tags_from_mail_templates_spec.rb diff --git a/lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake b/lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake new file mode 100644 index 000000000..b6b9edbc9 --- /dev/null +++ b/lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake @@ -0,0 +1,18 @@ +namespace :'2018_03_29_remove_code_tags_from_mail_templates' do + task clean: :environment do + remove_code_tag_from_body(Mails::ClosedMail) + remove_code_tag_from_body(Mails::InitiatedMail) + remove_code_tag_from_body(Mails::ReceivedMail) + remove_code_tag_from_body(Mails::RefusedMail) + remove_code_tag_from_body(Mails::WithoutContinuationMail) + end + + def remove_code_tag_from_body(model_class) + mails = model_class.where("body LIKE ?", "%%") + puts "#{mails.count} #{model_class.name} to clean" + mails.each do |m| + puts "cleaning #{model_class.name} ##{m.id}" + m.update(body: m.body.gsub("", "").gsub("", "")) + end + end +end diff --git a/spec/lib/rake/2018_03_29_remove_code_tags_from_mail_templates_spec.rb b/spec/lib/rake/2018_03_29_remove_code_tags_from_mail_templates_spec.rb new file mode 100644 index 000000000..402d6c8fa --- /dev/null +++ b/spec/lib/rake/2018_03_29_remove_code_tags_from_mail_templates_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper' + +describe '2018_03_29_remove_code_tags_from_mail_templates#clean' do + let(:rake_task) { Rake::Task['2018_03_29_remove_code_tags_from_mail_templates:clean'] } + + let!(:dirty_closed_mail) { create(:closed_mail, body: "

Salut


Voici ton email avec une balise --balise--") } + let!(:dirty_initiated_mail) { create(:initiated_mail, body: "

Salut


Voici ton email avec une balise --balise--") } + let!(:dirty_received_mail) { create(:received_mail, body: "

Salut


Voici ton email avec une balise --balise--") } + let!(:dirty_refused_mail) { create(:refused_mail, body: "

Salut


Voici ton email avec une balise --balise--") } + let!(:dirty_without_continuation_mail) { create(:without_continuation_mail, body: "

Salut


Voici ton email avec une balise --balise--") } + + before do + TPS::Application.load_tasks + rake_task.invoke + dirty_closed_mail.reload + dirty_initiated_mail.reload + dirty_received_mail.reload + dirty_refused_mail.reload + dirty_without_continuation_mail.reload + end + + after { rake_task.reenable } + + it 'cleans up code tags' do + expect(dirty_closed_mail.body).to eq("

Salut


Voici ton email avec une balise --balise--") + expect(dirty_initiated_mail.body).to eq("

Salut


Voici ton email avec une balise --balise--") + expect(dirty_received_mail.body).to eq("

Salut


Voici ton email avec une balise --balise--") + expect(dirty_refused_mail.body).to eq("

Salut


Voici ton email avec une balise --balise--") + expect(dirty_without_continuation_mail.body).to eq("

Salut


Voici ton email avec une balise --balise--") + end +end