From 40e67971f95a6289f8d56d97b886d65cb7b2a74a Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 11 Jun 2019 16:00:59 +0800 Subject: [PATCH] DEV: Add spec for `Email::Sender` for upload links in plain text emails. --- lib/email/sender.rb | 2 +- spec/jobs/user_email_spec.rb | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/email/sender.rb b/lib/email/sender.rb index ffe18cb95a6..464431a3ecf 100644 --- a/lib/email/sender.rb +++ b/lib/email/sender.rb @@ -72,7 +72,7 @@ module Email # These are the links we add when a user uploads a file or image. # Ideally we would parse general markdown into plain text, but that is almost an intractable problem. url_prefix = Discourse.base_url - @message.parts[0].body = @message.parts[0].body.to_s.gsub(/([^<]*)<\/a>/, '[\2](' + url_prefix + '\1)') + @message.parts[0].body = @message.parts[0].body.to_s.gsub(/([^<]*)<\/a>/, '[\2|attachment](' + url_prefix + '\1)') @message.parts[0].body = @message.parts[0].body.to_s.gsub(/]*)>/, '![](' + url_prefix + '\1)') @message.text_part.content_type = 'text/plain; charset=UTF-8' diff --git a/spec/jobs/user_email_spec.rb b/spec/jobs/user_email_spec.rb index 5615078a927..a1117209be9 100644 --- a/spec/jobs/user_email_spec.rb +++ b/spec/jobs/user_email_spec.rb @@ -147,6 +147,15 @@ describe Jobs::UserEmail do end it "sends an email by default for a PM to a user that's been recently seen" do + upload = Fabricate(:upload) + + post.update!(raw: <<~RAW) + This is a test post + + test + + RAW + Jobs::UserEmail.new.execute( type: :user_private_message, user_id: user.id, @@ -154,9 +163,16 @@ describe Jobs::UserEmail do notification_id: notification.id ) - expect(ActionMailer::Base.deliveries.first.to).to contain_exactly( - user.email - ) + email = ActionMailer::Base.deliveries.first + + expect(email.to).to contain_exactly(user.email) + + expect(email.parts[0].body.to_s).to include(<<~MD) + This is a test post + + [test|attachment](#{Discourse.base_url}#{upload.url}) + ![](#{Discourse.base_url}#{upload.url}) + MD end it "doesn't send a PM email to a user that's been recently seen and has email_messages_level set to never" do