DEV: Add spec for `Email::Sender` for upload links in plain text emails.
This commit is contained in:
parent
4deb0f6d59
commit
40e67971f9
|
@ -72,7 +72,7 @@ module Email
|
||||||
# These are the links we add when a user uploads a file or image.
|
# 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.
|
# Ideally we would parse general markdown into plain text, but that is almost an intractable problem.
|
||||||
url_prefix = Discourse.base_url
|
url_prefix = Discourse.base_url
|
||||||
@message.parts[0].body = @message.parts[0].body.to_s.gsub(/<a class="attachment" href="(\/uploads\/default\/[^"]+)">([^<]*)<\/a>/, '[\2](' + url_prefix + '\1)')
|
@message.parts[0].body = @message.parts[0].body.to_s.gsub(/<a class="attachment" href="(\/uploads\/default\/[^"]+)">([^<]*)<\/a>/, '[\2|attachment](' + url_prefix + '\1)')
|
||||||
@message.parts[0].body = @message.parts[0].body.to_s.gsub(/<img src="(\/uploads\/default\/[^"]+)"([^>]*)>/, '![](' + url_prefix + '\1)')
|
@message.parts[0].body = @message.parts[0].body.to_s.gsub(/<img src="(\/uploads\/default\/[^"]+)"([^>]*)>/, '![](' + url_prefix + '\1)')
|
||||||
|
|
||||||
@message.text_part.content_type = 'text/plain; charset=UTF-8'
|
@message.text_part.content_type = 'text/plain; charset=UTF-8'
|
||||||
|
|
|
@ -147,6 +147,15 @@ describe Jobs::UserEmail do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "sends an email by default for a PM to a user that's been recently seen" do
|
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
|
||||||
|
|
||||||
|
<a class="attachment" href="#{upload.url}">test</a>
|
||||||
|
<img src="#{upload.url}"/>
|
||||||
|
RAW
|
||||||
|
|
||||||
Jobs::UserEmail.new.execute(
|
Jobs::UserEmail.new.execute(
|
||||||
type: :user_private_message,
|
type: :user_private_message,
|
||||||
user_id: user.id,
|
user_id: user.id,
|
||||||
|
@ -154,9 +163,16 @@ describe Jobs::UserEmail do
|
||||||
notification_id: notification.id
|
notification_id: notification.id
|
||||||
)
|
)
|
||||||
|
|
||||||
expect(ActionMailer::Base.deliveries.first.to).to contain_exactly(
|
email = ActionMailer::Base.deliveries.first
|
||||||
user.email
|
|
||||||
)
|
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
|
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
|
it "doesn't send a PM email to a user that's been recently seen and has email_messages_level set to never" do
|
||||||
|
|
Loading…
Reference in New Issue