mandrill_mailer 0.4.1 → 0.4.2

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZmZiZGQ5ZDQwYzQ2ZDAzMzhjNjg3ZDA2ZTQ3YjkyYTQ3YmU4OTBjMA==
5
- data.tar.gz: !binary |-
6
- Y2Y0M2Y0ZjkzYTllNDg4NmUxOWU3YWVlYjIzNzEwYzA0MmZkZDU4MQ==
2
+ SHA1:
3
+ metadata.gz: 1bfa455214d0fad5180b76450327ac30b7ffcc74
4
+ data.tar.gz: aaa9f37d06d8c32a1d3bb0ba33490c7ce4e3b36d
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YmYzMmM5M2Y0NjNjNDE0MjdmZWEwODdmZDk5OTM4MWJlNTU2NmU2NTNjZDNl
10
- Y2JmNGE3NjA4ODA4M2JmZjZiNDRjYmJkM2FkYTUzY2NhYjUzOTk2ODExNTlj
11
- ZDJjYTUzN2JkMjEwMTAxNGZiMzJjNTFjNWM1NjVlMWI0ZjBkOTE=
12
- data.tar.gz: !binary |-
13
- ZTI4YjdmY2ZmNmU5MTYwYjJhNmJhZTRiMWVmMzE1YzhlNTc4MDc4ZDZjZTky
14
- ODc5YjIzYzQ0N2Q5NzExZjk5MDRkOWE2YzMxODRlYjIwYWE1MTU3MjJkYzI3
15
- OGY1ZTBmNTRlYzRlNGEyMGJkYmQ5OWIyM2NjYmIzOGQ1NTQ3YmE=
6
+ metadata.gz: 3f5580807bc7f7a0c13c6bcdc8749719e7b638e141253025b93b7fb3fc33dfe5735bf5f80f1bef647b5530f971647a80f133bb054d620e84b615b727eb9b76b1
7
+ data.tar.gz: 6dad0436a16f92014ac77929794d5e075a547be5ce19696f8a460e97af2589a34338a3b8c3c3f0e68c164ee2eeda95533e52eb54f42920a2db7a88d712e92a5d
data/README.md CHANGED
@@ -191,3 +191,14 @@ class UpdateEmailJob < Struct.new(:user_id)
191
191
  end
192
192
  end
193
193
  ```
194
+
195
+ ## Using an interceptor
196
+ You can set a mailer interceptor to override any params used when you deliver an e-mail.
197
+
198
+ Example:
199
+
200
+ ```ruby
201
+ MandrillMailer.configure do |config|
202
+ config.interceptor_params = { to: "emailtothatwillbeusedinall@emailssent.com" }
203
+ end
204
+ ```
@@ -1,3 +1,7 @@
1
+ * 0.4.2
2
+ Add the ability to intercept emails before they are sent in the config
3
+ see the specs for more info
4
+
1
5
  * 0.4.1
2
6
  add subaccount parameter
3
7
 
@@ -91,6 +91,7 @@ module MandrillMailer
91
91
 
92
92
  class InvalidEmail < StandardError; end
93
93
  class InvalidMailerMethod < StandardError; end
94
+ class InvalidInterceptorParams < StandardError; end
94
95
 
95
96
  # Public: Defaults for the mailer. Currently the only option is from:
96
97
  #
@@ -267,6 +268,13 @@ module MandrillMailer
267
268
  "attachments" => mandrill_attachment_args(args[:attachments])
268
269
  }
269
270
 
271
+ unless MandrillMailer.config.interceptor_params.nil?
272
+ unless MandrillMailer.config.interceptor_params.is_a?(Hash)
273
+ raise InvalidInterceptorParams.new "The interceptor_params config must be a Hash"
274
+ end
275
+ self.message.merge!(MandrillMailer.config.interceptor_params.stringify_keys)
276
+ end
277
+
270
278
  # return self so we can chain deliver after the method call, like a normal mailer.
271
279
  return self
272
280
  end
@@ -1,3 +1,3 @@
1
1
  module MandrillMailer
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -178,32 +178,6 @@ describe MandrillMailer::TemplateMailer do
178
178
  subject.template_content.should eq [{'name' => template_content_name, 'content' => template_content_content}]
179
179
  end
180
180
 
181
- it 'should produce the correct message' do
182
- subject.message.should eq ({
183
- "subject" => args[:subject],
184
- "from_email" => from_email,
185
- "from_name" => from_name,
186
- "to" => [{'email' => to_email, 'name' => to_name}],
187
- "headers" => args[:headers],
188
- "important" => args[:important],
189
- "inline_css" => args[:inline_css],
190
- "track_opens" => args[:track_opens],
191
- "track_clicks" => args[:track_clicks],
192
- "auto_text" => true,
193
- "url_strip_qs" => args[:url_strip_qs],
194
- "preserve_recipients" => false,
195
- "bcc_address" => args[:bcc],
196
- "global_merge_vars" => [{"name" => var_name, "content" => var_content}],
197
- "merge_vars" => [{"rcpt" => to_email, "vars" => [{"name" => var_rcpt_name, "content" => var_rcpt_content}]}],
198
- "tags" => args[:tags],
199
- "metadata" => args[:metadata],
200
- "subaccount" => args[:subaccount],
201
- "google_analytics_domains" => args[:google_analytics_domains],
202
- "google_analytics_campaign" => args[:google_analytics_campaign],
203
- "attachments" => [{'type' => attachment_mimetype, 'name' => attachment_filename, 'content' => Base64.encode64(attachment_file)}]
204
- })
205
- end
206
-
207
181
  it 'should retain data method' do
208
182
  subject.data.should eq({
209
183
  "key" => MandrillMailer.config.api_key,
@@ -219,6 +193,76 @@ describe MandrillMailer::TemplateMailer do
219
193
  it 'should set send_at option' do
220
194
  subject.send_at.should eq('2020-01-01 08:00:00')
221
195
  end
196
+
197
+ context "without interceptor" do
198
+ it 'should produce the correct message' do
199
+ subject.message.should eq ({
200
+ "subject" => args[:subject],
201
+ "from_email" => from_email,
202
+ "from_name" => from_name,
203
+ "to" => [{'email' => to_email, 'name' => to_name}],
204
+ "headers" => args[:headers],
205
+ "important" => args[:important],
206
+ "inline_css" => args[:inline_css],
207
+ "track_opens" => args[:track_opens],
208
+ "track_clicks" => args[:track_clicks],
209
+ "auto_text" => true,
210
+ "url_strip_qs" => args[:url_strip_qs],
211
+ "preserve_recipients" => false,
212
+ "bcc_address" => args[:bcc],
213
+ "global_merge_vars" => [{"name" => var_name, "content" => var_content}],
214
+ "merge_vars" => [{"rcpt" => to_email, "vars" => [{"name" => var_rcpt_name, "content" => var_rcpt_content}]}],
215
+ "tags" => args[:tags],
216
+ "metadata" => args[:metadata],
217
+ "subaccount" => args[:subaccount],
218
+ "google_analytics_domains" => args[:google_analytics_domains],
219
+ "google_analytics_campaign" => args[:google_analytics_campaign],
220
+ "attachments" => [{'type' => attachment_mimetype, 'name' => attachment_filename, 'content' => Base64.encode64(attachment_file)}]
221
+ })
222
+ end
223
+ end
224
+
225
+ context "with interceptor" do
226
+ before(:each) do
227
+ @intercepted_params = {
228
+ to: { email: 'interceptedto@test.com', name: 'Mr. Interceptor' },
229
+ tags: ['intercepted-tag'],
230
+ bcc_address: 'interceptedbbc@email.com'
231
+ }
232
+ MandrillMailer.config.interceptor_params = @intercepted_params
233
+ end
234
+
235
+ it "should raise an error if interceptor params is not a Hash" do
236
+ MandrillMailer.config.interceptor_params = "error"
237
+ expect { subject }.to raise_error(MandrillMailer::TemplateMailer::InvalidInterceptorParams, "The interceptor_params config must be a Hash")
238
+ end
239
+
240
+ it 'should produce the correct message' do
241
+ subject.message.should eq ({
242
+ "subject" => args[:subject],
243
+ "from_email" => from_email,
244
+ "from_name" => from_name,
245
+ "to" => @intercepted_params[:to],
246
+ "headers" => args[:headers],
247
+ "important" => args[:important],
248
+ "inline_css" => args[:inline_css],
249
+ "track_opens" => args[:track_opens],
250
+ "track_clicks" => args[:track_clicks],
251
+ "auto_text" => true,
252
+ "url_strip_qs" => args[:url_strip_qs],
253
+ "preserve_recipients" => false,
254
+ "bcc_address" => @intercepted_params[:bcc_address],
255
+ "global_merge_vars" => [{"name" => var_name, "content" => var_content}],
256
+ "merge_vars" => [{"rcpt" => to_email, "vars" => [{"name" => var_rcpt_name, "content" => var_rcpt_content}]}],
257
+ "tags" => @intercepted_params[:tags],
258
+ "metadata" => args[:metadata],
259
+ "subaccount" => args[:subaccount],
260
+ "google_analytics_domains" => args[:google_analytics_domains],
261
+ "google_analytics_campaign" => args[:google_analytics_campaign],
262
+ "attachments" => [{'type' => attachment_mimetype, 'name' => attachment_filename, 'content' => Base64.encode64(attachment_file)}]
263
+ })
264
+ end
265
+ end
222
266
  end
223
267
 
224
268
  describe 'url helpers in mailer' do
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mandrill_mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Rensel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-06 00:00:00.000000000 Z
11
+ date: 2013-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: actionpack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
@@ -56,28 +56,28 @@ dependencies:
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: Transactional Mailer for Mandrill
@@ -112,12 +112,12 @@ require_paths:
112
112
  - lib
113
113
  required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - ! '>='
120
+ - - '>='
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []