Skip to content

Commit

Permalink
Implement click tracking for individual message
Browse files Browse the repository at this point in the history
  • Loading branch information
dgoerlich committed Apr 6, 2016
1 parent 37a2e27 commit f0609a6
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 13 deletions.
10 changes: 8 additions & 2 deletions lib/sparkpost_rails/delivery_method.rb
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,7 @@ def prepare_options_from mail, sparkpost_data

prepare_sandbox_mode_from sparkpost_data
prepare_open_tracking_from sparkpost_data

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

unless SparkPostRails.configuration.campaign_id.nil?
@data[:campaign_id] = SparkPostRails.configuration.campaign_id
Expand Down Expand Up @@ -193,7 +192,14 @@ def prepare_open_tracking_from sparkpost_data
if sparkpost_data.has_key?(:track_opens)
@data[:options][:open_tracking] = sparkpost_data[:track_opens]
end
end

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

if sparkpost_data.has_key?(:track_clicks)
@data[:options][:click_tracking] = sparkpost_data[:track_clicks]
end
end

def prepare_headers
Expand Down
54 changes: 54 additions & 0 deletions spec/click_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 "Click Tracking" do
it "handles click tracking enabled in the configuration" do
SparkPostRails.configure do |c|
c.track_clicks = true
end

test_email = Mailer.test_email

@delivery_method.deliver!(test_email)

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

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

@delivery_method.deliver!(test_email)

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

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

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

@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:options][:click_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][:click_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_clicks option" do
SparkPostRails.configure do |c|
c.track_clicks = true
end

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

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

it "does not contain unset campaign_id" do
test_email = Mailer.test_email
@delivery_method.deliver!(test_email)
Expand Down

0 comments on commit f0609a6

Please sign in to comment.