Skip to content

Commit

Permalink
Support track_opens on an individual message
Browse files Browse the repository at this point in the history
  • Loading branch information
dgoerlich committed Apr 6, 2016
1 parent 3e31379 commit 37a2e27
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 13 deletions.
14 changes: 12 additions & 2 deletions lib/sparkpost_rails/delivery_method.rb
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,9 @@ def prepare_attachments_from mail
def prepare_options_from mail, sparkpost_data
@data[:options] = Hash.new

@data[:options][:open_tracking] = SparkPostRails.configuration.track_opens
prepare_sandbox_mode_from sparkpost_data
prepare_open_tracking_from sparkpost_data

@data[:options][:click_tracking] = SparkPostRails.configuration.track_clicks

unless SparkPostRails.configuration.campaign_id.nil?
Expand All @@ -169,7 +171,6 @@ def prepare_options_from mail, sparkpost_data
@data[:return_path] = SparkPostRails.configuration.return_path
end

prepare_sandbox_mode_from sparkpost_data
end

def prepare_sandbox_mode_from sparkpost_data
Expand All @@ -186,6 +187,15 @@ def prepare_sandbox_mode_from sparkpost_data
end
end

def prepare_open_tracking_from sparkpost_data
@data[:options][:open_tracking] = SparkPostRails.configuration.track_opens

if sparkpost_data.has_key?(:track_opens)
@data[:options][:open_tracking] = sparkpost_data[:track_opens]
end

end

def prepare_headers
@headers = {
"Authorization" => SparkPostRails.configuration.api_key,
Expand Down
54 changes: 54 additions & 0 deletions spec/open_tracking_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
require 'spec_helper'

describe SparkPostRails::DeliveryMethod do

before(:each) do
SparkPostRails.configuration.set_defaults
@delivery_method = SparkPostRails::DeliveryMethod.new
end

context "Open Tracking" do
it "handles open tracking enabled in the configuration" do
SparkPostRails.configure do |c|
c.track_opens = true
end

test_email = Mailer.test_email

@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:options][:open_tracking]).to eq(true)
end

it "handles open tracking enabled on an individual message" do
test_email = Mailer.test_email sparkpost_data: {track_opens: true}

@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:options][:open_tracking]).to eq(true)
end

it "handles the value on an individual message overriding configuration" do
SparkPostRails.configure do |c|
c.track_opens = true
end

test_email = Mailer.test_email sparkpost_data: {track_opens: false}

@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:options][:open_tracking]).to eq(false)
end

it "handles a default setting of 'false'" do
test_email = Mailer.test_email

@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:options][:open_tracking]).to eq(false)
end

end
end


11 changes: 0 additions & 11 deletions spec/options_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,6 @@

context "Options" do

it "handles track_opens option" do
SparkPostRails.configure do |c|
c.track_opens = true
end

test_email = Mailer.test_email
@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:options][:open_tracking]).to eq(true)
end

it "handles track_clicks option" do
SparkPostRails.configure do |c|
c.track_clicks = true
Expand Down

0 comments on commit 37a2e27

Please sign in to comment.