From 27b1ec29179e6cdca2d834d71afc36170e87552b Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 19 Aug 2015 09:12:08 +1000 Subject: [PATCH] FIX: incorrect emoji stripping logic --- lib/email/styles.rb | 7 +++++-- spec/components/email/styles_spec.rb | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/email/styles.rb b/lib/email/styles.rb index 426c03d6705..22f9ffe1e89 100644 --- a/lib/email/styles.rb +++ b/lib/email/styles.rb @@ -159,13 +159,16 @@ module Email end def strip_avatars_and_emojis - @fragment.css('img').each do |img| + @fragment.search('img').each do |img| if img['src'] =~ /_avatar/ img.parent['style'] = "vertical-align: top;" if img.parent.name == 'td' img.remove end - img.replace(img['title']) if (img['src'] =~ /images\/emoji/ || img['src'] =~ /uploads\/default\/_emoji/) + if img['title'] && (img['src'] =~ /images\/emoji/ || img['src'] =~ /uploads\/default\/_emoji/) + img.add_previous_sibling(img['title'] || "emoji") + img.remove + end end @fragment.to_s diff --git a/spec/components/email/styles_spec.rb b/spec/components/email/styles_spec.rb index e062d654bca..a4f8a5dde03 100644 --- a/spec/components/email/styles_spec.rb +++ b/spec/components/email/styles_spec.rb @@ -147,5 +147,21 @@ describe Email::Styles do end + context "strip_avatars_and_emojis" do + it "works for lonesome emoji with no title" do + emoji = "" + style = Email::Styles.new(emoji) + style.strip_avatars_and_emojis + expect(style.to_html).to match_html(emoji) + end + + it "works for lonesome emoji with title" do + emoji = "" + style = Email::Styles.new(emoji) + style.strip_avatars_and_emojis + expect(style.to_html).to match_html("cry_cry") + end + end + end