mailstro 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/Readme.md CHANGED
@@ -45,7 +45,7 @@ Mailstro.deliver(
45
45
  Sending an email to a list of users, with subscription management.
46
46
 
47
47
  ```ruby
48
- Mailstro.subscribe('jack@mailstroapp.com', :build_watchers, project_id)
48
+ Mailstro.subscribe('shanon@mailstroapp.com', :build_watchers, project_id)
49
49
 
50
50
  Mailstro.deliver(
51
51
  :to => [:build_watchers, project_id]
@@ -55,10 +55,10 @@ Mailstro.deliver(
55
55
  }
56
56
  )
57
57
 
58
- Mailstro.unsubscribe('jack@mailstroapp.com', :build_watchers, project_id)
58
+ Mailstro.unsubscribe('shanon@mailstroapp.com', :build_watchers, project_id)
59
59
  ```
60
60
 
61
- ## RSpec Test Mode
61
+ ## RSpec
62
62
 
63
63
  Require the mailstro spec helper to automatically enable test mode.
64
64
 
@@ -75,11 +75,19 @@ Mailstro.deliver(
75
75
  )
76
76
 
77
77
  Mailstro.should have_delivered(:welcome)
78
+ Mailstro.should have_delivered(
79
+ :to => 'shanon@mailstroapp.com',
80
+ :template_name => :welcome
81
+ )
78
82
 
79
83
  Mailstro.should have_subscribed('a@a.com', :watchers, 2)
80
84
  Mailstro.should have_unsubscribed('a@a.com', :watchers, 2)
81
- ```
82
85
 
86
+ Mailstro.should have_delivered(
87
+ :to => [:build_watchers, project_name],
88
+ :template_name => :build_failed
89
+ )
90
+ ```
83
91
 
84
92
  ## Contributing
85
93
 
@@ -5,7 +5,7 @@ RSpec.configure do |config|
5
5
  Mailstro::TestStrategy.enable
6
6
  end
7
7
 
8
- config.before(:each) do
8
+ config.after(:each) do
9
9
  Mailstro::TestStrategy.clear
10
10
  end
11
11
  end
@@ -8,10 +8,6 @@ module Mailstro
8
8
  @@subscribes = []
9
9
  @@unsubscribes = []
10
10
 
11
- def self.deliveries
12
- @@deliveries
13
- end
14
-
15
11
  def self.clear
16
12
  @@deliveries = []
17
13
  @@subscribes = []
@@ -34,8 +30,27 @@ module Mailstro
34
30
  @@unsubscribes << ListUnsubscribe.new(contact_email, list_type, list_name)
35
31
  end
36
32
 
37
- def self.has_delivered?(template_name)
38
- @@deliveries.map(&:template_name).include?(template_name)
33
+ def self.has_delivered?(conditions)
34
+ @@deliveries.any? do |delivery|
35
+ result = true
36
+ if conditions.is_a?(Hash)
37
+ if conditions[:template_name]
38
+ result = result && delivery.template_name == conditions[:template_name]
39
+ end
40
+ if conditions[:to]
41
+ result = result && delivery.contact_email == conditions[:to]
42
+ end
43
+ if conditions[:to_list_type]
44
+ result = result && delivery.list_type == conditions[:to_list_type]
45
+ end
46
+ if conditions[:to_list_name]
47
+ result = result && delivery.list_name == conditions[:to_list_name]
48
+ end
49
+ else
50
+ result = delivery.template_name == conditions
51
+ end
52
+ result
53
+ end
39
54
  end
40
55
 
41
56
  def self.has_subscribed?(contact_email, list_type, list_name)
@@ -1,3 +1,3 @@
1
1
  module Mailstro
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -14,4 +14,19 @@ describe Mailstro::Configuration do
14
14
  }.to raise_error(Mailstro::Error::ConfigurationError)
15
15
  end
16
16
  end
17
+
18
+ describe ".configure" do
19
+ after do
20
+ Mailstro.configuration = Mailstro::Configuration.new
21
+ end
22
+
23
+ it "allows you to pass a block to configure Mailstro" do
24
+ Mailstro.configure do |config|
25
+ config.api_key = 'x'
26
+ config.api_endpoint = 'mailstro.dev'
27
+ end
28
+
29
+ Mailstro.configuration.api_endpoint.should == 'mailstro.dev'
30
+ end
31
+ end
17
32
  end
@@ -29,39 +29,77 @@ describe Mailstro::TestStrategy do
29
29
  end
30
30
  end
31
31
 
32
- describe '.clear' do
33
- before do
34
- Mailstro.deliver(
35
- :to => 'a@a.com',
36
- :template_name => :welcome
37
- )
38
- end
39
-
40
- it 'empties out the .deliveries array' do
41
- Mailstro::TestStrategy.deliveries.should_not be_empty
42
- Mailstro::TestStrategy.clear
43
-
44
- Mailstro::TestStrategy.deliveries.should be_empty
45
- end
46
- end
47
-
48
32
  describe '.has_delivered?' do
49
- it 'keeps a record of deliveries' do
50
- Mailstro.deliver(
51
- :to => 'a@a.com',
52
- :template_name => :welcome
53
- )
54
-
55
- Mailstro.should have_delivered(:welcome)
33
+ context "with a delivery" do
34
+ before do
35
+ Mailstro.deliver(
36
+ :to => 'a@a.com',
37
+ :template_name => :welcome
38
+ )
39
+ end
40
+
41
+ it 'matches template name' do
42
+ Mailstro.should have_delivered(:welcome)
43
+ end
44
+
45
+ it 'matches contact email and template name' do
46
+ Mailstro.should have_delivered(
47
+ :to => 'a@a.com',
48
+ :template_name => :welcome,
49
+ )
50
+ end
51
+
52
+ it 'does not match an invalid template name' do
53
+ Mailstro.should_not have_delivered(:build_failed)
54
+ end
55
+
56
+ it 'does not match an invalid contact email' do
57
+ Mailstro.should_not have_delivered(
58
+ :to => 'b@a.com',
59
+ :template_name => :welcome,
60
+ )
61
+ end
56
62
  end
57
63
 
58
- it 'keeps a record of list deliveries' do
59
- Mailstro.deliver(
60
- :to => [:list_type, 10],
61
- :template_name => :welcome
62
- )
63
-
64
- Mailstro.should have_delivered(:welcome)
64
+ context "with a list delivery" do
65
+ before do
66
+ Mailstro.deliver(
67
+ :to => [:build_watchers, 'mailstro/mailstro-ruby'],
68
+ :template_name => :build_failed
69
+ )
70
+ end
71
+
72
+ it "matches against list type, name and template name" do
73
+ Mailstro.should have_delivered(
74
+ :to_list_type => :build_watchers,
75
+ :to_list_name => 'mailstro/mailstro-ruby',
76
+ :template_name => :build_failed,
77
+ )
78
+ end
79
+
80
+ it "does not match an invalid list type" do
81
+ Mailstro.should_not have_delivered(
82
+ :to_list_type => :customers,
83
+ :to_list_name => 'mailstro/mailstro-ruby',
84
+ :template_name => :build_failed,
85
+ )
86
+ end
87
+
88
+ it "does not match an invalid list name" do
89
+ Mailstro.should_not have_delivered(
90
+ :to_list_type => :build_watchers,
91
+ :to_list_name => 'mailstro/mailstro',
92
+ :template_name => :build_failed,
93
+ )
94
+ end
95
+
96
+ it "does not match an invalid template name" do
97
+ Mailstro.should_not have_delivered(
98
+ :to_list_type => :build_watchers,
99
+ :to_list_name => 'mailstro/mailstro-ruby',
100
+ :template_name => :welcome,
101
+ )
102
+ end
65
103
  end
66
104
  end
67
105
 
data/spec/spec_helper.rb CHANGED
@@ -7,6 +7,7 @@ Dir[SPEC_PATH.join("support/**/*.rb")].each { |f| require f }
7
7
 
8
8
  RSpec.configure do |config|
9
9
  config.after(:each) do
10
+ Mailstro::TestStrategy.clear
10
11
  Mailstro.strategy = Mailstro::RealStrategy
11
12
  end
12
13
 
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.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -160,7 +160,6 @@ files:
160
160
  - spec/mailstro/configuration_spec.rb
161
161
  - spec/mailstro/test_strategy_spec.rb
162
162
  - spec/mailstro/version_spec.rb
163
- - spec/mailstro_spec.rb
164
163
  - spec/spec_helper.rb
165
164
  - spec/support/fixtures.rb
166
165
  - spec/support/webmock.rb
@@ -198,7 +197,6 @@ test_files:
198
197
  - spec/mailstro/configuration_spec.rb
199
198
  - spec/mailstro/test_strategy_spec.rb
200
199
  - spec/mailstro/version_spec.rb
201
- - spec/mailstro_spec.rb
202
200
  - spec/spec_helper.rb
203
201
  - spec/support/fixtures.rb
204
202
  - spec/support/webmock.rb
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mailstro do
4
-
5
- after do
6
- Mailstro.configuration = Mailstro::Configuration.new
7
- end
8
-
9
- describe ".configure" do
10
- it "allows you to pass a block to configure Mailstro" do
11
- Mailstro.configure do |config|
12
- config.api_key = 'x'
13
- config.api_endpoint = 'mailstro.dev'
14
- end
15
-
16
- Mailstro.configuration.api_endpoint.should == 'mailstro.dev'
17
- end
18
- end
19
- end