mandrill_mailer 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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: []