mandrill_mailer 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +23 -5
- data/lib/mandrill_mailer.rb +1 -0
- data/lib/mandrill_mailer/mock.rb +4 -0
- data/lib/mandrill_mailer/transactional_mailer.rb +14 -24
- data/lib/mandrill_mailer/version.rb +1 -1
- data/mandrill_mailer-0.0.2.gem +0 -0
- metadata +3 -1
data/README.md
CHANGED
@@ -22,6 +22,11 @@ MandrillMailer.api_key = ENV['MANDRILL_API_KEY']
|
|
22
22
|
|
23
23
|
Don't forget to setup your ENV variables on your server
|
24
24
|
|
25
|
+
You will also need to set default_url_options for the mailer, similar to action mailer
|
26
|
+
in your environment config files:
|
27
|
+
|
28
|
+
`MandrillMailer::TransactionalMailer.default_url_options = { :host => 'localhost' }`
|
29
|
+
|
25
30
|
## Creating a new mailer
|
26
31
|
Creating a new Mandrill Mailer is similar to a normal Rails mailer:
|
27
32
|
|
@@ -94,7 +99,7 @@ The test for this particular Mailer is setup like so:
|
|
94
99
|
|
95
100
|
```
|
96
101
|
test_setup_for :invite do |mailer, options|
|
97
|
-
invitation =
|
102
|
+
invitation = MandrillMailer::Mock.new({
|
98
103
|
email: options[:email],
|
99
104
|
owner_name: 'foobar',
|
100
105
|
secret: rand(9000000..1000000).to_s
|
@@ -103,9 +108,22 @@ test_setup_for :invite do |mailer, options|
|
|
103
108
|
end
|
104
109
|
```
|
105
110
|
|
106
|
-
|
111
|
+
Use MandrillMailer::Mock to mock out objects.
|
107
112
|
|
108
|
-
|
113
|
+
If in order to represent a url within a mock, make sure there is a `url` or `path` attribute,
|
114
|
+
for example, if I had a course mock and I was using the `course_url` route helper within the mailer
|
115
|
+
I would create the mock like so:
|
116
|
+
|
117
|
+
```
|
118
|
+
course = MandrillMailer::Mock.new({
|
119
|
+
title: 'zombies',
|
120
|
+
type: 'Ruby',
|
121
|
+
url: 'http://funzone.com/zombies'
|
122
|
+
})
|
123
|
+
```
|
124
|
+
|
125
|
+
This would ensure that `course_url(course)` works as expected.
|
126
|
+
|
127
|
+
The mailer and options passed to the `.test` method are yielded to the block.
|
109
128
|
|
110
|
-
|
111
|
-
* `.test_friendly_url`(object, route helper as a symbol) - This helper is used for using route helpers, but still staying compatible with using OpenStructs for stubing out the mailing test objects (there is probably a much better way of doing this)
|
129
|
+
The `:email` option is the only required option, make sure to add at least this to your test object.
|
data/lib/mandrill_mailer.rb
CHANGED
@@ -229,28 +229,6 @@ module MandrillMailer
|
|
229
229
|
|
230
230
|
protected
|
231
231
|
|
232
|
-
# Public: Url helper for creating OpenStruct compatible urls
|
233
|
-
# This is used for making sure urls will still work with
|
234
|
-
# OpenStructs used in the email testing code
|
235
|
-
#
|
236
|
-
# OpenStruct should have a .url property to work with this
|
237
|
-
#
|
238
|
-
# object - Object that would normally be passed into the route helper
|
239
|
-
# route_helper - The route helper as a symbol needed for the url
|
240
|
-
#
|
241
|
-
# Examples
|
242
|
-
#
|
243
|
-
# 'VIDEO_URL' => open_struct_url(video, :code_tv_video_url)
|
244
|
-
#
|
245
|
-
# Returns the url as a string
|
246
|
-
def test_friendly_url(object, route_helper)
|
247
|
-
if object.kind_of? OpenStruct
|
248
|
-
object.url
|
249
|
-
else
|
250
|
-
method(route_helper).call(object)
|
251
|
-
end
|
252
|
-
end
|
253
|
-
|
254
232
|
# Makes this class act as a singleton without it actually being a singleton
|
255
233
|
# This keeps the syntax the same as the orginal mailers so we can swap quickly if something
|
256
234
|
# goes wrong.
|
@@ -263,10 +241,22 @@ module MandrillMailer
|
|
263
241
|
super || instance_methods.include?(method)
|
264
242
|
end
|
265
243
|
|
266
|
-
# Proxy route helpers to rails if Rails exists
|
244
|
+
# Proxy route helpers to rails if Rails exists. Doing routes this way
|
245
|
+
# makes it so this gem doesn't need to be a rails engine
|
267
246
|
def method_missing(method, *args)
|
268
247
|
return super unless defined?(Rails) && Rails.application.routes.url_helpers.respond_to?(method)
|
269
|
-
|
248
|
+
# Check to see if one of the args is an open struct. If it is, we'll assume it's the
|
249
|
+
# test stub and try to call a path or url attribute.
|
250
|
+
if args.any? {|arg| arg.kind_of?(MandrillMailer::Mock)}
|
251
|
+
# take the first OpenStruct found in args and look for .url or.path
|
252
|
+
args.each do |arg|
|
253
|
+
if arg.kind_of?(MandrillMailer::Mock)
|
254
|
+
break arg.url || arg.path
|
255
|
+
end
|
256
|
+
end
|
257
|
+
else
|
258
|
+
Rails.application.routes.url_helpers.method(method).call(*args, host: @@url_host)
|
259
|
+
end
|
270
260
|
end
|
271
261
|
|
272
262
|
def image_path(image)
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mandrill_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -87,8 +87,10 @@ files:
|
|
87
87
|
- Gemfile.lock
|
88
88
|
- README.md
|
89
89
|
- lib/mandrill_mailer.rb
|
90
|
+
- lib/mandrill_mailer/mock.rb
|
90
91
|
- lib/mandrill_mailer/transactional_mailer.rb
|
91
92
|
- lib/mandrill_mailer/version.rb
|
93
|
+
- mandrill_mailer-0.0.2.gem
|
92
94
|
- mandrill_mailer.gemspec
|
93
95
|
- spec/mandrill_mailer_spec.rb
|
94
96
|
- spec/spec_helper.rb
|