posten 0.0.2 → 0.0.3

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,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