Skip to content

Commit

Permalink
Implement support for Campaign ID 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 278f5f9 commit 8d45c29
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 22 deletions.
17 changes: 13 additions & 4 deletions lib/sparkpost_rails/delivery_method.rb
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,7 @@ def prepare_options_from mail, sparkpost_data
prepare_sandbox_mode_from sparkpost_data
prepare_open_tracking_from sparkpost_data
prepare_click_tracking_from sparkpost_data

unless SparkPostRails.configuration.campaign_id.nil?
@data[:campaign_id] = SparkPostRails.configuration.campaign_id
end
prepare_campaign_id_from sparkpost_data

unless SparkPostRails.configuration.return_path.nil?
@data[:return_path] = SparkPostRails.configuration.return_path
Expand Down Expand Up @@ -220,6 +217,18 @@ def prepare_click_tracking_from sparkpost_data
end
end

def prepare_campaign_id_from sparkpost_data
campaign_id = SparkPostRails.configuration.campaign_id

if sparkpost_data.has_key?(:campaign_id)
campaign_id = sparkpost_data[:campaign_id]
end

if campaign_id
@data[:campaign_id] = campaign_id
end
end

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

describe SparkPostRails::DeliveryMethod do

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

context "Campaign ID" do
it "handles campaign id in the configuration" do
SparkPostRails.configure do |c|
c.campaign_id = "ABCD1234"
end

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

expect(@delivery_method.data[:campaign_id]).to eq("ABCD1234")
end

it "handles campaign id on an individual message" do
test_email = Mailer.test_email sparkpost_data: {campaign_id: "My Campaign"}

@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:campaign_id]).to eq("My Campaign")
end

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

test_email = Mailer.test_email sparkpost_data: {campaign_id: "My Campaign"}

@delivery_method.deliver!(test_email)

expect(@delivery_method.data[:campaign_id]).to eq("My Campaign")
end

it "handles the value on an individual message of nil overriding configuration" do
SparkPostRails.configure do |c|
c.campaign_id = "ABCD1234"
end

test_email = Mailer.test_email sparkpost_data: {campaign_id: nil}

@delivery_method.deliver!(test_email)

expect(@delivery_method.data.has_key?(:campaign_id)).to eq(false)
end

it "handles a default setting of none" do
test_email = Mailer.test_email
@delivery_method.deliver!(test_email)

expect(@delivery_method.data.has_key?(:campaign_id)).to eq(false)
end

end
end


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

context "Options" do

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

expect(@delivery_method.data.has_key?(:campaign_id)).to eq(false)
end

it "contains supplied campaign_id" do
SparkPostRails.configure do |c|
c.campaign_id = "ABCD1234"
end

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

expect(@delivery_method.data[:campaign_id]).to eq("ABCD1234")
end

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

0 comments on commit 8d45c29

Please sign in to comment.