sparkpost_rails 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe SparkPostRails::DeliveryMethod do
4
+
5
+ before(:each) do
6
+ SparkPostRails.configuration.set_defaults
7
+ @delivery_method = SparkPostRails::DeliveryMethod.new
8
+ end
9
+
10
+ context "Sandbox Mode" do
11
+ it "handles sandbox mode enabled in the configuration" do
12
+ SparkPostRails.configure do |c|
13
+ c.sandbox = true
14
+ end
15
+
16
+ test_email = Mailer.test_email
17
+
18
+ @delivery_method.deliver!(test_email)
19
+
20
+ expect(@delivery_method.data[:options][:sandbox]).to eq(true)
21
+ end
22
+
23
+ it "handles sandbox mode enabled on an individual message" do
24
+ test_email = Mailer.test_email sparkpost_data: {sandbox: true}
25
+
26
+ @delivery_method.deliver!(test_email)
27
+
28
+ expect(@delivery_method.data[:options][:sandbox]).to eq(true)
29
+ end
30
+
31
+ it "handles the value on an individual message overriding configuration" do
32
+ SparkPostRails.configure do |c|
33
+ c.sandbox = true
34
+ end
35
+
36
+ test_email = Mailer.test_email sparkpost_data: {sandbox: false}
37
+
38
+ @delivery_method.deliver!(test_email)
39
+
40
+ expect(@delivery_method.data[:options].has_key?(:sandbox)).to eq(false)
41
+ end
42
+
43
+ it "handles a default setting of 'false'" do
44
+ test_email = Mailer.test_email
45
+
46
+ @delivery_method.deliver!(test_email)
47
+
48
+ expect(@delivery_method.data[:options].has_key?(:sandbox)).to eq(false)
49
+ end
50
+
51
+ end
52
+ end
53
+
data/spec/spec_helper.rb CHANGED
@@ -28,6 +28,30 @@ class Mailer < ActionMailer::Base
28
28
  text_part: "Hello, Testing!"
29
29
  }
30
30
 
31
+ if options.has_key?(:attachments)
32
+ options[:attachments].times do |i|
33
+ attachments["file_#{i}.txt"] = "This is file #{i}"
34
+ end
35
+
36
+ options.delete(:attachments)
37
+ end
38
+
39
+ if options.has_key?(:images)
40
+ options[:images].times do |i|
41
+ attachments["image_#{i}.png"] = sparkpost_logo_contents
42
+ end
43
+
44
+ options.delete(:images)
45
+ end
46
+
47
+ if options.has_key?(:inline_attachments)
48
+ options[:inline_attachments].times do |i|
49
+ attachments.inline["image_#{i}.png"] = sparkpost_logo_contents
50
+ end
51
+
52
+ options.delete(:inline_attachments)
53
+ end
54
+
31
55
  data.merge! options
32
56
 
33
57
  if data.has_key?(:html_part)
@@ -44,7 +68,10 @@ class Mailer < ActionMailer::Base
44
68
  end
45
69
 
46
70
  end
71
+ end
47
72
 
48
-
73
+ def sparkpost_logo_contents
74
+ encoded_contents = "iVBORw0KGgoAAAANSUhEUgAAAfIAAACCCAMAAACKGrqXAAAAY1BMVEX////6\nZCNVVVr6ZCP6ZCNVVVr6ZCNVVVr6ZCP6ZCNVVVpVVVr6ZCNVVVpVVVr6ZCNV\nVVpVVVr6ZCNVVVpVVVpVVVpVVVr6ZCP6ZCNVVVr6ZCP6ZCP6ZCP6ZCNVVVpV\nVVr6ZCO+CfRXAAAAH3RSTlMAgMBAEPBgoDAg4NBwkIDAUBDwQLBgMOCgIFCQ\n0LBwPgQxPgAADDFJREFUeF7s2kGLnEAYhOFqbERhSROHZFzXWer//8rAJo17\n2jklhK73OXsrKItP9Q/hmBQGZ1EWLD6roqB4W5QEdbNnJUFxWOaoTssce1rm\nOGznbTia3VtVDJy27aYYePjDi1KgOLPaidy7whC5V4Uh8l1hiNxVEdDcvSgC\nTnenIsCXVQEw+TIrBOstarPjtKNe5lj9mbLQ6/ak4eEeFjkOf+ai0aGFRY7J\nYZGjhUWOyWGRo4VFjsNhkeMeFjmKsyLHurnLuL7h4dTI2W4Zv8Wg3t1drHHh\nzV3iLxLc3bqmLNS6i6JQ6/asKNS6vSgKtW5raNQ6641a95uGRa2z3qj1rPXG\nbb3TiFA3+9l6WzQQPOwn662ehyJQ6z7+JO6qBNR6/1jefNc4sNtP1luJuMhw\nhLnW2+qIyDnCXOutBUTOEaYrvQY2DQKLvzT1d72rxoD2NPLqD4eGgNlfux7Z\nNTQurd11mts0NLZbJ2nz/9Hs328/vv32fnvV3/N6u/zUaH61d4bLjatIFLZJ\nCL4owsKScEgm8n3/p9zazexi6yC6Wz2pqbo752diLBUfNN3QtP/6m9LdZ85t\nHkv40jB+B4fUd7cHmVB/Tm+2FQJnrPjbnYjPz6apPsyJ17RGx61fn/FcF5Yx\nynw3RP5OX1QanX/A4d0Q18iMSI8dFRd/q8i6CnVza8u7oU1xeGgQ2sjDjda0\nZLppjfjtUV3kPrfrk2DfDRMkjlQx17nKY4VjvIn00Hi22wDnCMhJ+VAaUWPG\nKpAXTaMc+bwe4EnyXL9E7iTHNKi39n3EwW/hMOMvQR7bEO0CxGjZ7cmbVw1m\nDfIik4TI0xpiEj7XLsJJXmb2uXVvJbryCPMfPUDPeuTJkgN6BOS0uoKAMKc6\n5EVBhDxbGHrQ2IW1jDEWuh8mOaHLc0GOv5oWu5+47xbvOPYdLoU5VOTKi6+U\n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\nYII=\n"
75
+ Base64.decode64(encoded_contents)
49
76
  end
50
77
  end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe SparkPostRails::DeliveryMethod do
4
+
5
+ before(:each) do
6
+ @delivery_method = SparkPostRails::DeliveryMethod.new
7
+ end
8
+
9
+ context "Substitution Data" do
10
+
11
+ it "accepts substitution data with template-based message" do
12
+ sub_data = {item_1: "test data 1", item_2: "test data 2"}
13
+
14
+ test_email = Mailer.test_email sparkpost_data: {template_id: "test_template", substitution_data: sub_data}
15
+
16
+ @delivery_method.deliver!(test_email)
17
+
18
+ expect(@delivery_method.data[:substitution_data]).to eq(sub_data)
19
+ end
20
+
21
+ it "accepts substitution data with inline-content message" do
22
+ sub_data = {item_1: "test data 1", item_2: "test data 2"}
23
+
24
+ test_email = Mailer.test_email sparkpost_data: {substitution_data: sub_data}
25
+
26
+ @delivery_method.deliver!(test_email)
27
+
28
+ expect(@delivery_method.data[:substitution_data]).to eq(sub_data)
29
+ end
30
+
31
+ it "does not include substitution data element if none is passed" do
32
+ test_email = Mailer.test_email sparkpost_data: {template_id: "test_template"}
33
+ @delivery_method.deliver!(test_email)
34
+
35
+ expect(@delivery_method.data.has_key?(:substitution_data)).to eq(false)
36
+ end
37
+
38
+ end
39
+ end
40
+
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe SparkPostRails::DeliveryMethod do
4
+
5
+ before(:each) do
6
+ @delivery_method = SparkPostRails::DeliveryMethod.new
7
+ end
8
+
9
+ context "Templates" do
10
+
11
+ it "accepts the template id to use" do
12
+ test_email = Mailer.test_email sparkpost_data: {template_id: "test_template"}
13
+
14
+ @delivery_method.deliver!(test_email)
15
+
16
+ expect(@delivery_method.data[:content][:template_id]).to eq("test_template")
17
+ end
18
+
19
+ it "does not include inline content elements" do
20
+ test_email = Mailer.test_email sparkpost_data: {template_id: "test_template"}
21
+
22
+ @delivery_method.deliver!(test_email)
23
+
24
+ expect(@delivery_method.data[:content].has_key?(:from)).to eq(false)
25
+ expect(@delivery_method.data[:content].has_key?(:reply_to)).to eq(false)
26
+
27
+ expect(@delivery_method.data[:content].has_key?(:subject)).to eq(false)
28
+
29
+ expect(@delivery_method.data[:content].has_key?(:html)).to eq(false)
30
+ expect(@delivery_method.data[:content].has_key?(:text)).to eq(false)
31
+ expect(@delivery_method.data[:content].has_key?(:attachments)).to eq(false)
32
+ expect(@delivery_method.data[:content].has_key?(:inline_images)).to eq(false)
33
+ end
34
+
35
+ end
36
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparkpost_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Kimball
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-04-01 00:00:00.000000000 Z
12
+ date: 2016-04-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -69,13 +69,23 @@ files:
69
69
  - lib/sparkpost_rails/exceptions.rb
70
70
  - lib/sparkpost_rails/railtie.rb
71
71
  - lib/sparkpost_rails/version.rb
72
- - spec/content_spec.rb
72
+ - spec/attachments_spec.rb
73
+ - spec/bcc_recipients_spec.rb
74
+ - spec/campaign_id_spec.rb
75
+ - spec/cc_recipients_spec.rb
76
+ - spec/click_tracking_spec.rb
73
77
  - spec/from_spec.rb
74
- - spec/options_spec.rb
78
+ - spec/inline_content_spec.rb
79
+ - spec/open_tracking_spec.rb
80
+ - spec/recipients_list_spec.rb
75
81
  - spec/recipients_spec.rb
76
82
  - spec/reply_to_spec.rb
77
83
  - spec/response_spec.rb
84
+ - spec/return_path_spec.rb
85
+ - spec/sandbox_mode_spec.rb
78
86
  - spec/spec_helper.rb
87
+ - spec/substitution_data_spec.rb
88
+ - spec/template_spec.rb
79
89
  homepage: https://github.com/the-refinery/sparkpost_rails
80
90
  licenses:
81
91
  - MIT
@@ -101,10 +111,20 @@ signing_key:
101
111
  specification_version: 4
102
112
  summary: SparkPost for Rails
103
113
  test_files:
104
- - spec/spec_helper.rb
105
- - spec/recipients_spec.rb
106
- - spec/content_spec.rb
107
- - spec/options_spec.rb
114
+ - spec/cc_recipients_spec.rb
115
+ - spec/inline_content_spec.rb
116
+ - spec/return_path_spec.rb
117
+ - spec/recipients_list_spec.rb
118
+ - spec/campaign_id_spec.rb
108
119
  - spec/response_spec.rb
120
+ - spec/bcc_recipients_spec.rb
121
+ - spec/sandbox_mode_spec.rb
109
122
  - spec/from_spec.rb
123
+ - spec/recipients_spec.rb
124
+ - spec/spec_helper.rb
125
+ - spec/template_spec.rb
126
+ - spec/open_tracking_spec.rb
110
127
  - spec/reply_to_spec.rb
128
+ - spec/attachments_spec.rb
129
+ - spec/click_tracking_spec.rb
130
+ - spec/substitution_data_spec.rb
data/spec/options_spec.rb DELETED
@@ -1,69 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe SparkPostRails::DeliveryMethod do
4
-
5
- before(:each) do
6
- @delivery_method = SparkPostRails::DeliveryMethod.new
7
- end
8
-
9
- context "Options" do
10
-
11
- it "handles track_opens option" do
12
- SparkPostRails.configure do |c|
13
- c.track_opens = true
14
- end
15
-
16
- test_email = Mailer.test_email
17
- @delivery_method.deliver!(test_email)
18
-
19
- expect(@delivery_method.data[:options][:open_tracking]).to eq(true)
20
- end
21
-
22
- it "handles track_clicks option" do
23
- SparkPostRails.configure do |c|
24
- c.track_clicks = true
25
- end
26
-
27
- test_email = Mailer.test_email
28
- @delivery_method.deliver!(test_email)
29
-
30
- expect(@delivery_method.data[:options][:click_tracking]).to eq(true)
31
- end
32
-
33
- it "does not contain unset campaign_id" do
34
- test_email = Mailer.test_email
35
- @delivery_method.deliver!(test_email)
36
-
37
- expect(@delivery_method.data.has_key?(:campaign_id)).to eq(false)
38
- end
39
-
40
- it "contains supplied campaign_id" do
41
- SparkPostRails.configure do |c|
42
- c.campaign_id = "ABCD1234"
43
- end
44
-
45
- test_email = Mailer.test_email
46
- @delivery_method.deliver!(test_email)
47
-
48
- expect(@delivery_method.data[:campaign_id]).to eq("ABCD1234")
49
- end
50
-
51
- it "does not contain unset return_path" do
52
- test_email = Mailer.test_email
53
- @delivery_method.deliver!(test_email)
54
-
55
- expect(@delivery_method.data.has_key?(:return_path)).to eq(false)
56
- end
57
-
58
- it "contains supplied return_path" do
59
- SparkPostRails.configure do |c|
60
- c.return_path = "BOUNCE-EMAIL@EXAMPLE.COM"
61
- end
62
-
63
- test_email = Mailer.test_email
64
- @delivery_method.deliver!(test_email)
65
-
66
- expect(@delivery_method.data[:return_path]).to eq('BOUNCE-EMAIL@EXAMPLE.COM')
67
- end
68
- end
69
- end