From a9abb23a2167d5cedf87e3fe2f4dbaef7dffbc19 Mon Sep 17 00:00:00 2001 From: Igor Balos Date: Tue, 22 Nov 2016 14:25:06 +0100 Subject: [PATCH] updated track opens flag to support true, false, nil values --- lib/postmark/mail_message_converter.rb | 2 +- lib/postmark/message_extensions/mail.rb | 5 +- .../postmark/mail_message_converter_spec.rb | 103 +++++++++++++----- 3 files changed, 82 insertions(+), 28 deletions(-) diff --git a/lib/postmark/mail_message_converter.rb b/lib/postmark/mail_message_converter.rb index 0bad5db..70657a4 100644 --- a/lib/postmark/mail_message_converter.rb +++ b/lib/postmark/mail_message_converter.rb @@ -30,7 +30,7 @@ def headers_part 'Subject' => @message.subject, 'Headers' => @message.export_headers, 'Tag' => @message.tag.to_s, - 'TrackOpens' => @message.track_opens + 'TrackOpens' => (cast_to_bool(@message.track_opens) unless @message.track_opens.empty?) } end diff --git a/lib/postmark/message_extensions/mail.rb b/lib/postmark/message_extensions/mail.rb index e4466d8..158d2d3 100644 --- a/lib/postmark/message_extensions/mail.rb +++ b/lib/postmark/message_extensions/mail.rb @@ -16,11 +16,12 @@ def tag=(val) end def track_opens(val = nil) - default 'TRACK-OPENS', !!val + default 'TRACK-OPENS', (!!val).to_s unless val.nil? + header['TRACK-OPENS'].to_s end def track_opens=(val) - header['TRACK-OPENS'] = !!val + header['TRACK-OPENS'] = (!!val).to_s end def postmark_attachments=(value) diff --git a/spec/unit/postmark/mail_message_converter_spec.rb b/spec/unit/postmark/mail_message_converter_spec.rb index fb478f6..b89679d 100644 --- a/spec/unit/postmark/mail_message_converter_spec.rb +++ b/spec/unit/postmark/mail_message_converter_spec.rb @@ -15,7 +15,7 @@ end let(:mail_html_message) do - mail = Mail.new do + Mail.new do from "sheldon@bigbangtheory.com" to "lenard@bigbangtheory.com" subject "Hello!" @@ -25,7 +25,7 @@ end let(:mail_message_with_tracking) do - mail = Mail.new do + Mail.new do from "sheldon@bigbangtheory.com" to "lenard@bigbangtheory.com" subject "Hello!" @@ -35,6 +35,28 @@ end end + let(:mail_message_with_tracking_set_variable) do + mail = mail_html_message + mail.track_opens=true + mail + end + + let(:mail_message_with_tracking_disabled_set_variable) do + mail = mail_html_message + mail.track_opens=true + mail + end + + let(:mail_message_with_tracking_disabled) do + Mail.new do + from "sheldon@bigbangtheory.com" + to "lenard@bigbangtheory.com" + subject "Hello!" + content_type 'text/html; charset=UTF-8' + body "Hello Sheldon!" + track_opens false + end + end let(:tagged_mail_message) do Mail.new do @@ -55,7 +77,7 @@ end let(:mail_multipart_message) do - mail = Mail.new do + Mail.new do from "sheldon@bigbangtheory.com" to "lenard@bigbangtheory.com" subject "Hello!" @@ -123,8 +145,7 @@ "From" => "sheldon@bigbangtheory.com", "Subject" => "Hello!", "TextBody" => "Hello Sheldon!", - "To" => "lenard@bigbangtheory.com", - 'TrackOpens' => false} + "To" => "lenard@bigbangtheory.com"} end it 'converts tagged text messages correctly' do @@ -133,16 +154,14 @@ "Subject" => "Hello!", "TextBody" => "Hello Sheldon!", "Tag" => "sheldon", - "To"=>"lenard@bigbangtheory.com", - 'TrackOpens' => false} + "To"=>"lenard@bigbangtheory.com"} end it 'converts plain text messages without body correctly' do subject.new(mail_message_without_body).run.should == { "From" => "sheldon@bigbangtheory.com", "Subject" => "Hello!", - "To" => "lenard@bigbangtheory.com", - 'TrackOpens' => false} + "To" => "lenard@bigbangtheory.com"} end it 'converts html messages correctly' do @@ -150,8 +169,7 @@ "From" => "sheldon@bigbangtheory.com", "Subject" => "Hello!", "HtmlBody" => "Hello Sheldon!", - "To" => "lenard@bigbangtheory.com", - 'TrackOpens' => false} + "To" => "lenard@bigbangtheory.com"} end it 'converts multipart messages correctly' do @@ -160,8 +178,7 @@ "Subject" => "Hello!", "HtmlBody" => "Hello Sheldon!", "TextBody" => "Hello Sheldon!", - "To" => "lenard@bigbangtheory.com", - 'TrackOpens' => false} + "To" => "lenard@bigbangtheory.com"} end it 'converts messages with attachments correctly' do @@ -172,8 +189,7 @@ "Content"=>encoded_empty_gif_data, "ContentType"=>"image/gif"}], "TextBody"=>"Hello Sheldon!", - "To"=>"lenard@bigbangtheory.com", - 'TrackOpens' => false} + "To"=>"lenard@bigbangtheory.com"} end it 'converts messages with named addresses correctly' do @@ -182,18 +198,55 @@ "Subject" => "Hello!", "TextBody" => "Hello Sheldon!", "To" => "Leonard Hofstadter ", - "ReplyTo" => 'Penny The Neighbor ', - 'TrackOpens' => false - } + "ReplyTo" => 'Penny The Neighbor '} end - it 'recognizes when open tracking is enabled' do - subject.new(mail_message_with_tracking).run.should == { - "From" => "sheldon@bigbangtheory.com", - "Subject" => "Hello!", - "HtmlBody" => "Hello Sheldon!", - "To" => "lenard@bigbangtheory.com", - "TrackOpens" => true} + context 'recognizes open tracking' do + + context 'setup inside of mail' do + + it 'is enabled' do + subject.new(mail_message_with_tracking).run.should == { + "From" => "sheldon@bigbangtheory.com", + "Subject" => "Hello!", + "HtmlBody" => "Hello Sheldon!", + "To" => "lenard@bigbangtheory.com", + "TrackOpens" => true} + end + + it 'is disabled' do + subject.new(mail_message_with_tracking_disabled).run.should == { + "From" => "sheldon@bigbangtheory.com", + "Subject" => "Hello!", + "HtmlBody" => "Hello Sheldon!", + "To" => "lenard@bigbangtheory.com", + "TrackOpens" => false} + end + + end + + context 'setup with tracking variable' do + + it 'is enabled' do + subject.new(mail_message_with_tracking_set_variable).run.should == { + "From" => "sheldon@bigbangtheory.com", + "Subject" => "Hello!", + "HtmlBody" => "Hello Sheldon!", + "To" => "lenard@bigbangtheory.com", + "TrackOpens" => true} + end + + it 'is disabled' do + subject.new(mail_message_with_tracking_disabled_set_variable).run.should == { + "From" => "sheldon@bigbangtheory.com", + "Subject" => "Hello!", + "HtmlBody" => "Hello Sheldon!", + "To" => "lenard@bigbangtheory.com", + "TrackOpens" => true} + end + + end + end it 'correctly decodes unicode in messages transfered as quoted-printable' do