posten 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e09e2ebeb4aa81ad15f50d02cb2b734a2dd493c
4
- data.tar.gz: 44b8f2ff496751fbdd11e76f7b3d67c9196cb602
3
+ metadata.gz: 028dc4afd9e44b74fc548a2bb523926445f964d6
4
+ data.tar.gz: 0ef9bffeda538885f47d4179cb09c87b233dc080
5
5
  SHA512:
6
- metadata.gz: 0b83ca4a6a9b10de1478323ea7c4ea38f4e81988753c625545fbd658fdfe513583f04adbe02d8c6b2efd9ba60a6d5dc8ac3692fb93872b7422bad9694c106c33
7
- data.tar.gz: eb541fd35b96c673d259b02601ddd390a8fa4f9c9acb5ed72c1c1fbd6106b8e81643cb1adf89e03cd491e07d1458742dc20c268d11e1aace435601ad1897ee7c
6
+ metadata.gz: 7c023d101bebc3c4f0f9cc761fd013a4095207811d650b486f7167eab24d20957e49895f151aad7f8617164ddcae507b6799490a333b228e5ca9130c9473febe
7
+ data.tar.gz: dcdda50a9edae464213f5943b77d641ba80e2b30d6cf3d784f2d79b8143108a1d84cbaf3f7c7aa8cb66df313b05be9051e9f168f52e83413e44c5402a47d64ea
data/README.md CHANGED
@@ -144,6 +144,39 @@ end
144
144
  welcome {{ app.titleize(user.name) }}!
145
145
  ```
146
146
 
147
+ Development
148
+ -----------
149
+
150
+ You can use [mt][mt] to fake a SMTP server and print mails to STDOUT.
151
+
152
+ ```
153
+ $ gem install mt
154
+ $ mt 2525
155
+ ```
156
+
157
+ Update the smtp settings with the fake SMTP server url. It's recommended
158
+ to store configuration in environment variables.
159
+
160
+ ```ruby
161
+ # SMTP_URL => "smtp://localhost:2525"
162
+ Posten.connect(url: ENV.fetch("SMTP_URL"))
163
+ ```
164
+
165
+ Enjoy:
166
+
167
+ ```
168
+ $ mt 2525
169
+ ---
170
+ from: bob@posten.gem
171
+ to: alice@posten.gem
172
+ Reply-To:
173
+ subject: =?utf-8?Q?hello?=
174
+ Message-ID: <1442511985.7632298.501.70146383400960@me.com>
175
+ Date: Thu, 17 Sep 2015 19:46:25 +0200
176
+
177
+ Can you keep a secret?
178
+ ```
179
+
147
180
  Testing
148
181
  -------
149
182
 
@@ -171,16 +204,14 @@ mailer.welcome_mail(User.first)
171
204
  UserMailer.deliveries.count # => 1
172
205
  ```
173
206
 
174
- `Posten.deliveries` is simply an array. If you want to have a clean slate,
175
- you can reset it manually using Array's `clear` method before each test is
176
- executed. The next example uses the testing library [Cutest][cutest]:
207
+ Use `Posten.reset` to have a clean slate before each test is executed:
177
208
 
178
209
  ```ruby
179
210
  require "cutest"
180
211
  require "posten/test"
181
212
 
182
- setup do
183
- Posten.deliveries.clear
213
+ prepare do
214
+ Posten.reset
184
215
  end
185
216
 
186
217
  scope "signup" do
@@ -197,6 +228,8 @@ scope "signup" do
197
228
  end
198
229
  ```
199
230
 
231
+ The example above uses the testing library [Cutest][cutest].
232
+
200
233
  SMTP Settings
201
234
  -------------
202
235
 
@@ -243,3 +276,4 @@ $ gem install posten
243
276
 
244
277
  [cutest]: https://github.com/djanowski/cutest
245
278
  [mote]: https://github.com/soveran/mote
279
+ [mt]: https://github.com/soveran/mt
data/lib/posten/test.rb CHANGED
@@ -1,11 +1,21 @@
1
1
  require "ostruct"
2
2
 
3
3
  class Posten
4
+ def self.sandbox
5
+ return @@sandbox ||= Hash.new { |h, k| h[k] = [] }
6
+ end
7
+
4
8
  def self.deliveries
5
- return @deliveries ||= []
9
+ return sandbox[self.name]
6
10
  end
7
11
 
8
- def deliver(options)
12
+ def self.reset
13
+ sandbox.clear
14
+ end
15
+
16
+ undef_method(:deliver)
17
+
18
+ def deliver(options = {})
9
19
  deliveries << OpenStruct.new(defaults.merge(options))
10
20
  end
11
21
 
@@ -1,3 +1,3 @@
1
1
  class Posten
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/posten.rb CHANGED
@@ -27,7 +27,7 @@ class Posten
27
27
  settings[:smtp] or raise("Missing configuration: Try `Posten.connect`")
28
28
  end
29
29
 
30
- def deliver(options)
30
+ def deliver(options = {})
31
31
  return @malone.deliver(defaults.merge(options))
32
32
  end
33
33
 
data/posten.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = `git ls-files`.split("\n")
14
14
 
15
- s.add_dependency "malone", "~> 1.1.0"
15
+ s.add_dependency "malone", "~> 1.2.0"
16
16
  s.add_dependency "mote", "~> 1.1.4"
17
17
  s.add_dependency "seteable", "1.0.0"
18
18
  s.add_development_dependency "bundler", "~> 1.10"
data/test/deliver.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "malone/test"
2
2
 
3
3
  setup do
4
- Malone.deliveries.clear
4
+ Malone.reset_deliveries
5
5
 
6
6
  Posten.connect(url: "smtp://foo%40bar.com:pass1234@smtp.gmail.com:587")
7
7
  end
data/test/sandbox.rb CHANGED
@@ -1,21 +1,45 @@
1
1
  require_relative "../lib/posten/test"
2
2
 
3
- test "sandbox" do
4
- Posten.connect({})
3
+ Posten.connect({})
5
4
 
6
- defaults = { from: "bob@posten.gem", to: "eve@posten.gem" }
5
+ Posten.defaults(from: "bob@posten.gem", to: "eve@posten.gem")
7
6
 
8
- Posten.defaults(defaults)
7
+ setup do
8
+ Posten.reset
9
9
 
10
- params = {
11
- subject: "subject",
12
- text: "text",
13
- html: "<html></html>"
14
- }
10
+ assert_equal 0, Posten.deliveries.size
15
11
 
16
- Posten.new.deliver(params)
12
+ { subject: "subject", text: "text", html: "<html></html>" }
13
+ end
14
+
15
+ test "sandbox" do |params|
16
+ posten = Posten.new
17
+ posten.deliver(params)
17
18
 
18
19
  mail = Posten.deliveries.first
19
20
 
20
- assert_equal defaults.merge(params), mail.to_h
21
+ assert_equal posten.defaults.merge(params), mail.to_h
22
+ end
23
+
24
+ test "mailer" do |params|
25
+ class UserMailer < Posten
26
+ end
27
+
28
+ mailer = UserMailer.new
29
+ mailer.deliver(params)
30
+
31
+ mail = UserMailer.deliveries.first
32
+
33
+ assert_equal mailer.defaults.merge(params), mail.to_h
34
+ end
35
+
36
+ test "different sandboxes" do |params|
37
+ class UserMailer < Posten
38
+ end
39
+
40
+ Posten.new.deliver
41
+ UserMailer.new.deliver
42
+
43
+ assert_equal 1, Posten.deliveries.count
44
+ assert_equal 1, UserMailer.deliveries.count
21
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: posten
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francesco Rodríguez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-17 00:00:00.000000000 Z
11
+ date: 2015-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: malone
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.0
19
+ version: 1.2.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
- version: 1.1.0
26
+ version: 1.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mote
29
29
  requirement: !ruby/object:Gem::Requirement