mailstro 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/Readme.md +7 -10
- data/lib/mailstro.rb +6 -6
- data/lib/mailstro/delivery.rb +11 -12
- data/lib/mailstro/test_strategy.rb +6 -13
- data/lib/mailstro/version.rb +1 -1
- data/spec/integration/delivery_spec.rb +12 -14
- data/spec/mailstro/test_strategy_spec.rb +8 -12
- metadata +2 -2
data/Readme.md
CHANGED
@@ -33,10 +33,9 @@ TODO: Write a gem description
|
|
33
33
|
Sending a basic email.
|
34
34
|
|
35
35
|
```ruby
|
36
|
-
Mailstro.deliver(
|
37
|
-
:to
|
38
|
-
:
|
39
|
-
:template_data => {
|
36
|
+
Mailstro.deliver(:welcome
|
37
|
+
:to => 'shanon@mailstroapp.com',
|
38
|
+
:data => {
|
40
39
|
:coupon_code => 'THANKS01'
|
41
40
|
}
|
42
41
|
)
|
@@ -53,14 +52,12 @@ require 'mailsto/rspec'
|
|
53
52
|
Verify emails are being sent with simple matchers.
|
54
53
|
|
55
54
|
```ruby
|
56
|
-
Mailstro.deliver(
|
57
|
-
:to
|
58
|
-
:template_name => :welcome,
|
55
|
+
Mailstro.deliver(:welcome
|
56
|
+
:to => 'shanon@mailstroapp.com'
|
59
57
|
)
|
60
58
|
|
61
|
-
Mailstro.should have_delivered(
|
62
|
-
:to
|
63
|
-
:template_name => :welcome
|
59
|
+
Mailstro.should have_delivered(:welcome,
|
60
|
+
:to => 'shanon@mailstroapp.com'
|
64
61
|
)
|
65
62
|
```
|
66
63
|
|
data/lib/mailstro.rb
CHANGED
@@ -11,8 +11,8 @@ module Mailstro
|
|
11
11
|
# Allows us to remove default behaviour during testing.
|
12
12
|
class RealStrategy
|
13
13
|
class << self
|
14
|
-
def deliver(options)
|
15
|
-
Delivery.new(options).deliver
|
14
|
+
def deliver(email_name, options)
|
15
|
+
Delivery.new(email_name, options).deliver
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -28,11 +28,11 @@ module Mailstro
|
|
28
28
|
yield(@configuration) && @configuration.validate!
|
29
29
|
end
|
30
30
|
|
31
|
-
def self.deliver(options)
|
32
|
-
@strategy.deliver(options)
|
31
|
+
def self.deliver(email_name, options)
|
32
|
+
@strategy.deliver(email_name, options)
|
33
33
|
end
|
34
34
|
|
35
|
-
def self.has_delivered?(
|
36
|
-
TestStrategy.has_delivered?(
|
35
|
+
def self.has_delivered?(email_name, options={})
|
36
|
+
TestStrategy.has_delivered?(email_name, options)
|
37
37
|
end
|
38
38
|
end
|
data/lib/mailstro/delivery.rb
CHANGED
@@ -1,26 +1,25 @@
|
|
1
1
|
module Mailstro
|
2
2
|
class Delivery < Resource
|
3
|
-
|
4
|
-
@options = options
|
5
|
-
end
|
3
|
+
attr_reader :email_name
|
6
4
|
|
7
|
-
def
|
8
|
-
@
|
5
|
+
def initialize(email_name, options)
|
6
|
+
@email_name = email_name
|
7
|
+
@options = options
|
9
8
|
end
|
10
9
|
|
11
|
-
def
|
12
|
-
@options.fetch(:
|
10
|
+
def to
|
11
|
+
@options.fetch(:to)
|
13
12
|
end
|
14
13
|
|
15
|
-
def
|
16
|
-
@options.fetch(:
|
14
|
+
def data
|
15
|
+
@options.fetch(:data, nil)
|
17
16
|
end
|
18
17
|
|
19
18
|
def deliver
|
20
19
|
post("deliveries",
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:
|
20
|
+
:to => to,
|
21
|
+
:email_name => email_name,
|
22
|
+
:data => data
|
24
23
|
)
|
25
24
|
end
|
26
25
|
end
|
@@ -10,22 +10,15 @@ module Mailstro
|
|
10
10
|
@@deliveries = []
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.deliver(options)
|
14
|
-
@@deliveries << Delivery.new(options)
|
13
|
+
def self.deliver(email_name, options)
|
14
|
+
@@deliveries << Delivery.new(email_name, options)
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.has_delivered?(conditions)
|
17
|
+
def self.has_delivered?(email_name, conditions)
|
18
18
|
@@deliveries.any? do |delivery|
|
19
|
-
result =
|
20
|
-
if conditions
|
21
|
-
|
22
|
-
result = result && delivery.template_name == conditions[:template_name]
|
23
|
-
end
|
24
|
-
if conditions[:to]
|
25
|
-
result = result && delivery.contact_email == conditions[:to]
|
26
|
-
end
|
27
|
-
else
|
28
|
-
result = delivery.template_name == conditions
|
19
|
+
result = delivery.email_name == email_name
|
20
|
+
if conditions[:to]
|
21
|
+
result = result && delivery.to == conditions[:to]
|
29
22
|
end
|
30
23
|
result
|
31
24
|
end
|
data/lib/mailstro/version.rb
CHANGED
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'posting a delivery', :integration do
|
4
4
|
let(:contact_email) { "test@example.com" }
|
5
|
-
let(:
|
6
|
-
let(:
|
5
|
+
let(:email_name) { :test }
|
6
|
+
let(:data) { { :greeting => "Gday!" } }
|
7
7
|
|
8
8
|
before do
|
9
9
|
Mailstro.configure do |config|
|
@@ -12,20 +12,19 @@ describe 'posting a delivery', :integration do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
let(:expected_body) {{
|
15
|
-
"api_key"
|
16
|
-
"
|
17
|
-
"
|
18
|
-
"
|
15
|
+
"api_key" => "lolapi",
|
16
|
+
"to" => "test@example.com",
|
17
|
+
"email_name" => "test",
|
18
|
+
"data" => { "greeting" => "Gday!" }
|
19
19
|
}}
|
20
20
|
|
21
21
|
it "succesfully submits a delivery to mailstro" do
|
22
22
|
stub_request(:post, "https://api.mailstroapp.com/v1/deliveries").
|
23
23
|
with(:body => expected_body).to_return(:status => 200, :body => fixture("response.json"))
|
24
24
|
|
25
|
-
response = Mailstro.deliver(
|
26
|
-
:to
|
27
|
-
:
|
28
|
-
:template_data => template_data
|
25
|
+
response = Mailstro.deliver(email_name,
|
26
|
+
:to => contact_email,
|
27
|
+
:data => data
|
29
28
|
)
|
30
29
|
response['success'].should == true
|
31
30
|
end
|
@@ -35,10 +34,9 @@ describe 'posting a delivery', :integration do
|
|
35
34
|
to_return(:status => 401)
|
36
35
|
|
37
36
|
expect do
|
38
|
-
Mailstro.deliver(
|
39
|
-
:to
|
40
|
-
:
|
41
|
-
:template_data => template_data
|
37
|
+
Mailstro.deliver(email_name,
|
38
|
+
:to => contact_email,
|
39
|
+
:data => data
|
42
40
|
)
|
43
41
|
end.to raise_error(Mailstro::Error::AuthorisationError, "api_key not authorised")
|
44
42
|
end
|
@@ -10,9 +10,8 @@ describe Mailstro::TestStrategy do
|
|
10
10
|
it "doesn't send anything when enabled" do
|
11
11
|
Mailstro::Delivery.should_not_receive(:deliver)
|
12
12
|
|
13
|
-
Mailstro.deliver(
|
14
|
-
:to
|
15
|
-
:template_name => :welcome
|
13
|
+
Mailstro.deliver(:welcome,
|
14
|
+
:to => 'a@a.com'
|
16
15
|
)
|
17
16
|
end
|
18
17
|
end
|
@@ -20,9 +19,8 @@ describe Mailstro::TestStrategy do
|
|
20
19
|
describe '.has_delivered?' do
|
21
20
|
context "with a delivery" do
|
22
21
|
before do
|
23
|
-
Mailstro.deliver(
|
24
|
-
:to
|
25
|
-
:template_name => :welcome
|
22
|
+
Mailstro.deliver(:welcome,
|
23
|
+
:to => 'a@a.com'
|
26
24
|
)
|
27
25
|
end
|
28
26
|
|
@@ -31,9 +29,8 @@ describe Mailstro::TestStrategy do
|
|
31
29
|
end
|
32
30
|
|
33
31
|
it 'matches contact email and template name' do
|
34
|
-
Mailstro.should have_delivered(
|
35
|
-
:to
|
36
|
-
:template_name => :welcome,
|
32
|
+
Mailstro.should have_delivered(:welcome,
|
33
|
+
:to => 'a@a.com'
|
37
34
|
)
|
38
35
|
end
|
39
36
|
|
@@ -42,9 +39,8 @@ describe Mailstro::TestStrategy do
|
|
42
39
|
end
|
43
40
|
|
44
41
|
it 'does not match an invalid contact email' do
|
45
|
-
Mailstro.should_not have_delivered(
|
46
|
-
:to
|
47
|
-
:template_name => :welcome,
|
42
|
+
Mailstro.should_not have_delivered(:welcome,
|
43
|
+
:to => 'b@a.com'
|
48
44
|
)
|
49
45
|
end
|
50
46
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailstro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-10-
|
13
|
+
date: 2013-10-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|