postmark 1.18.0 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,21 +23,25 @@ describe Postmark::ApiClient do
23
23
  subject {api_client}
24
24
 
25
25
  context "attr readers" do
26
- it {should respond_to(:http_client)}
27
- it {should respond_to(:max_retries)}
26
+ it { expect(subject).to respond_to(:http_client) }
27
+ it { expect(subject).to respond_to(:max_retries) }
28
28
  end
29
29
 
30
30
  context "when it's created without options" do
31
- its(:max_retries) {should eq 3}
31
+ it "max retries" do
32
+ expect(subject.max_retries).to eq 3
33
+ end
32
34
  end
33
35
 
34
36
  context "when it's created with user options" do
35
37
  subject {Postmark::ApiClient.new(api_token, :max_retries => max_retries, :foo => :bar)}
36
- its(:max_retries) {should eq max_retries}
38
+ it "max_retries" do
39
+ expect(subject.max_retries).to eq max_retries
40
+ end
37
41
 
38
42
  it 'passes other options to HttpClient instance' do
39
43
  allow(Postmark::HttpClient).to receive(:new).with(api_token, :foo => :bar)
40
- subject.should be
44
+ expect(subject).to be
41
45
  end
42
46
  end
43
47
 
@@ -46,12 +50,12 @@ describe Postmark::ApiClient do
46
50
 
47
51
  it 'assigns the api token to the http client instance' do
48
52
  subject.api_token = api_token
49
- subject.http_client.api_token.should == api_token
53
+ expect(subject.http_client.api_token).to eq api_token
50
54
  end
51
55
 
52
56
  it 'is aliased as api_key=' do
53
57
  subject.api_key = api_token
54
- subject.http_client.api_token.should == api_token
58
+ expect(subject.http_client.api_token).to eq api_token
55
59
  end
56
60
  end
57
61
 
@@ -74,8 +78,7 @@ describe Postmark::ApiClient do
74
78
 
75
79
  it 'converts response to ruby format' do
76
80
  expect(http_client).to receive(:post).with('email', email_json) {response}
77
- r = subject.deliver(message_hash)
78
- r.should have_key(:message_id)
81
+ expect(subject.deliver(message_hash)).to have_key(:message_id)
79
82
  end
80
83
  end
81
84
 
@@ -94,7 +97,7 @@ describe Postmark::ApiClient do
94
97
  it 'converts response to ruby format' do
95
98
  expect(http_client).to receive(:post).with('email/batch', emails_json) {response}
96
99
  response = subject.deliver_in_batches([message_hash, message_hash, message_hash])
97
- response.first.should have_key(:error_code)
100
+ expect(response.first).to have_key(:error_code)
98
101
  end
99
102
  end
100
103
 
@@ -185,7 +188,7 @@ describe Postmark::ApiClient do
185
188
  subject.deliver_messages([message, message, message])
186
189
  end
187
190
 
188
- it "should retry 3 times" do
191
+ it "retry 3 times" do
189
192
  2.times do
190
193
  expect(http_client).to receive(:post).and_raise(Postmark::InternalServerError)
191
194
  end
@@ -193,7 +196,7 @@ describe Postmark::ApiClient do
193
196
  expect {subject.deliver_messages([message, message, message])}.not_to raise_error
194
197
  end
195
198
 
196
- it "should retry on timeout" do
199
+ it "retry on timeout" do
197
200
  expect(http_client).to receive(:post).and_raise(Postmark::TimeoutError)
198
201
  expect(http_client).to receive(:post) {response}
199
202
  expect {subject.deliver_messages([message, message, message])}.not_to raise_error
@@ -218,7 +221,7 @@ describe Postmark::ApiClient do
218
221
  subject.deliver_messages_with_templates(messages)
219
222
  end
220
223
 
221
- it "should retry 3 times" do
224
+ it "retry 3 times" do
222
225
  2.times do
223
226
  expect(http_client).to receive(:post).and_raise(Postmark::InternalServerError)
224
227
  end
@@ -226,7 +229,7 @@ describe Postmark::ApiClient do
226
229
  expect {subject.deliver_messages_with_templates(messages)}.not_to raise_error
227
230
  end
228
231
 
229
- it "should retry on timeout" do
232
+ it "retry on timeout" do
230
233
  expect(http_client).to receive(:post).and_raise(Postmark::TimeoutError)
231
234
  expect(http_client).to receive(:post) {response}
232
235
  expect {subject.deliver_messages_with_templates(messages)}.not_to raise_error
@@ -239,7 +242,7 @@ describe Postmark::ApiClient do
239
242
 
240
243
  it 'requests data at /deliverystats' do
241
244
  expect(http_client).to receive(:get).with("deliverystats") {response}
242
- subject.delivery_stats.should have_key(:bounces)
245
+ expect(subject.delivery_stats).to have_key(:bounces)
243
246
  end
244
247
  end
245
248
 
@@ -266,13 +269,10 @@ describe Postmark::ApiClient do
266
269
  end
267
270
 
268
271
  it 'loads inbound messages' do
269
- allow(subject.http_client).to receive(:get).
270
- with('messages/inbound', an_instance_of(Hash)).and_return(response)
272
+ allow(subject.http_client).to receive(:get).with('messages/inbound', an_instance_of(Hash)).and_return(response)
271
273
  expect(subject.messages(:inbound => true).count).to eq(5)
272
274
  end
273
-
274
275
  end
275
-
276
276
  end
277
277
 
278
278
  describe '#get_messages' do
@@ -287,20 +287,15 @@ describe Postmark::ApiClient do
287
287
  and_return(response)
288
288
  subject.get_messages(:offset => 50, :count => 50)
289
289
  end
290
-
291
290
  end
292
291
 
293
292
  context 'given inbound' do
294
293
  let(:response) {{"TotalCount" => 1, "InboundMessages" => [{}]}}
295
294
 
296
295
  it 'requests data at /messages/inbound' do
297
- expect(http_client).to receive(:get).
298
- with('messages/inbound', :offset => 50, :count => 50).
299
- and_return(response)
300
- subject.get_messages(:inbound => true, :offset => 50, :count => 50).
301
- should be_an(Array)
296
+ expect(http_client).to receive(:get).with('messages/inbound', :offset => 50, :count => 50).and_return(response)
297
+ expect(subject.get_messages(:inbound => true, :offset => 50, :count => 50)).to be_an(Array)
302
298
  end
303
-
304
299
  end
305
300
  end
306
301
 
@@ -338,7 +333,7 @@ describe Postmark::ApiClient do
338
333
  expect(http_client).to receive(:get).
339
334
  with("messages/outbound/#{id}/details", {}).
340
335
  and_return(response)
341
- subject.get_message(id).should have_key(:to)
336
+ expect(subject.get_message(id)).to have_key(:to)
342
337
  end
343
338
  end
344
339
 
@@ -347,7 +342,7 @@ describe Postmark::ApiClient do
347
342
  expect(http_client).to receive(:get).
348
343
  with("messages/inbound/#{id}/details", {}).
349
344
  and_return(response)
350
- subject.get_message(id, :inbound => true).should have_key(:to)
345
+ expect(subject.get_message(id, :inbound => true)).to have_key(:to)
351
346
  end
352
347
  end
353
348
  end
@@ -363,7 +358,7 @@ describe Postmark::ApiClient do
363
358
  expect(http_client).to receive(:get).
364
359
  with("messages/outbound/#{id}/dump", {}).
365
360
  and_return(response)
366
- subject.dump_message(id).should have_key(:body)
361
+ expect(subject.dump_message(id)).to have_key(:body)
367
362
  end
368
363
 
369
364
  end
@@ -373,7 +368,7 @@ describe Postmark::ApiClient do
373
368
  expect(http_client).to receive(:get).
374
369
  with("messages/inbound/#{id}/dump", {}).
375
370
  and_return(response)
376
- subject.dump_message(id, :inbound => true).should have_key(:body)
371
+ expect(subject.dump_message(id, :inbound => true)).to have_key(:body)
377
372
  end
378
373
  end
379
374
  end
@@ -500,10 +495,7 @@ describe Postmark::ApiClient do
500
495
  let(:response) {{'Opens' => [], 'TotalCount' => 0}}
501
496
 
502
497
  it 'performs a GET request to /messages/outbound/opens' do
503
- allow(http_client).
504
- to receive(:get).with("messages/outbound/opens/#{message_id}",
505
- options).
506
- and_return(response)
498
+ allow(http_client).to receive(:get).with("messages/outbound/opens/#{message_id}", options).and_return(response)
507
499
  expect(subject.get_opens_by_message_id(message_id, options)).to be_an(Array)
508
500
  expect(subject.get_opens_by_message_id(message_id, options).count).to be_zero
509
501
  end
@@ -516,10 +508,7 @@ describe Postmark::ApiClient do
516
508
  let(:response) {{'Clicks' => [], 'TotalCount' => 0}}
517
509
 
518
510
  it 'performs a GET request to /messages/outbound/clicks' do
519
- allow(http_client).
520
- to receive(:get).with("messages/outbound/clicks/#{message_id}",
521
- options).
522
- and_return(response)
511
+ allow(http_client).to receive(:get).with("messages/outbound/clicks/#{message_id}", options).and_return(response)
523
512
  expect(subject.get_clicks_by_message_id(message_id, options)).to be_an(Array)
524
513
  expect(subject.get_clicks_by_message_id(message_id, options).count).to be_zero
525
514
  end
@@ -702,7 +691,7 @@ describe Postmark::ApiClient do
702
691
 
703
692
  it 'requests server info from Postmark and converts it to ruby format' do
704
693
  expect(http_client).to receive(:get).with('server') {response}
705
- subject.server_info.should have_key(:inbound_hash)
694
+ expect(subject.server_info).to have_key(:inbound_hash)
706
695
  end
707
696
  end
708
697
 
@@ -716,7 +705,7 @@ describe Postmark::ApiClient do
716
705
 
717
706
  it 'updates server info in Postmark and converts it to ruby format' do
718
707
  expect(http_client).to receive(:put).with('server', anything) {response}
719
- subject.update_server_info(update)[:smtp_api_activated].should be false
708
+ expect(subject.update_server_info(update)[:smtp_api_activated]).to be false
720
709
  end
721
710
  end
722
711
 
@@ -967,8 +956,7 @@ describe Postmark::ApiClient do
967
956
 
968
957
  it 'converts response to ruby format' do
969
958
  expect(http_client).to receive(:post).with('email/withTemplate', json_representation_of(email)) {response}
970
- r = subject.deliver_with_template(message_hash)
971
- r.should have_key(:message_id)
959
+ expect(subject.deliver_with_template(message_hash)).to have_key(:message_id)
972
960
  end
973
961
  end
974
962
 
@@ -1039,9 +1027,9 @@ describe Postmark::ApiClient do
1039
1027
 
1040
1028
  it 'converts response to ruby format' do
1041
1029
  expect(http_client).to receive(:get).with('stats/outbound', {:tag => 'foo'}) {response}
1042
- r = subject.get_stats_totals(:tag => 'foo')
1043
- r.should have_key(:sent)
1044
- r.should have_key(:bounce_rate)
1030
+ response = subject.get_stats_totals(:tag => 'foo')
1031
+ expect(response).to have_key(:sent)
1032
+ expect(response).to have_key(:bounce_rate)
1045
1033
  end
1046
1034
  end
1047
1035
 
@@ -1073,38 +1061,35 @@ describe Postmark::ApiClient do
1073
1061
 
1074
1062
  it 'converts response to ruby format' do
1075
1063
  expect(http_client).to receive(:get).with('stats/outbound/sends', {:tag => 'foo'}) {response}
1076
- r = subject.get_stats_counts(:sends, :tag => 'foo')
1077
- r.should have_key(:days)
1078
- r.should have_key(:sent)
1064
+ response = subject.get_stats_counts(:sends, :tag => 'foo')
1065
+ expect(response).to have_key(:days)
1066
+ expect(response).to have_key(:sent)
1079
1067
 
1080
- first_day = r[:days].first
1081
-
1082
- first_day.should have_key(:date)
1083
- first_day.should have_key(:sent)
1068
+ first_day = response[:days].first
1069
+ expect(first_day).to have_key(:date)
1070
+ expect(first_day).to have_key(:sent)
1084
1071
  end
1085
1072
 
1086
1073
  it 'uses fromdate that is passed in' do
1087
1074
  expect(http_client).to receive(:get).with('stats/outbound/sends', {:tag => 'foo', :fromdate => '2015-01-01'}) {response}
1088
- r = subject.get_stats_counts(:sends, :tag => 'foo', :fromdate => '2015-01-01')
1089
- r.should have_key(:days)
1090
- r.should have_key(:sent)
1091
-
1092
- first_day = r[:days].first
1075
+ response = subject.get_stats_counts(:sends, :tag => 'foo', :fromdate => '2015-01-01')
1076
+ expect(response).to have_key(:days)
1077
+ expect(response).to have_key(:sent)
1093
1078
 
1094
- first_day.should have_key(:date)
1095
- first_day.should have_key(:sent)
1079
+ first_day = response[:days].first
1080
+ expect(first_day).to have_key(:date)
1081
+ expect(first_day).to have_key(:sent)
1096
1082
  end
1097
1083
 
1098
1084
  it 'uses stats type that is passed in' do
1099
1085
  expect(http_client).to receive(:get).with('stats/outbound/opens/readtimes', {:tag => 'foo', :type => :readtimes}) {response}
1100
- r = subject.get_stats_counts(:opens, :type => :readtimes, :tag => 'foo')
1101
- r.should have_key(:days)
1102
- r.should have_key(:sent)
1103
-
1104
- first_day = r[:days].first
1086
+ response = subject.get_stats_counts(:opens, :type => :readtimes, :tag => 'foo')
1087
+ expect(response).to have_key(:days)
1088
+ expect(response).to have_key(:sent)
1105
1089
 
1106
- first_day.should have_key(:date)
1107
- first_day.should have_key(:sent)
1090
+ first_day = response[:days].first
1091
+ expect(first_day).to have_key(:date)
1092
+ expect(first_day).to have_key(:sent)
1108
1093
  end
1109
1094
  end
1110
1095
  end
@@ -15,49 +15,46 @@ describe Postmark::Bounce do
15
15
  :subject => "Hello from our app!"} }
16
16
  let(:bounce_data_postmark) { Postmark::HashHelper.to_postmark(bounce_data) }
17
17
  let(:bounces_data) { [bounce_data, bounce_data, bounce_data] }
18
-
19
18
  let(:bounce) { Postmark::Bounce.new(bounce_data) }
20
19
 
21
20
  subject { bounce }
22
21
 
23
22
  context "attr readers" do
24
-
25
- it { should respond_to(:email) }
26
- it { should respond_to(:bounced_at) }
27
- it { should respond_to(:type) }
28
- it { should respond_to(:description) }
29
- it { should respond_to(:details) }
30
- it { should respond_to(:name) }
31
- it { should respond_to(:id) }
32
- it { should respond_to(:server_id) }
33
- it { should respond_to(:tag) }
34
- it { should respond_to(:message_id) }
35
- it { should respond_to(:subject) }
36
-
23
+ it { expect(subject).to respond_to(:email) }
24
+ it { expect(subject).to respond_to(:bounced_at) }
25
+ it { expect(subject).to respond_to(:type) }
26
+ it { expect(subject).to respond_to(:description) }
27
+ it { expect(subject).to respond_to(:details) }
28
+ it { expect(subject).to respond_to(:name) }
29
+ it { expect(subject).to respond_to(:id) }
30
+ it { expect(subject).to respond_to(:server_id) }
31
+ it { expect(subject).to respond_to(:tag) }
32
+ it { expect(subject).to respond_to(:message_id) }
33
+ it { expect(subject).to respond_to(:subject) }
37
34
  end
38
35
 
39
36
  context "given a bounce created from bounce_data" do
40
37
 
41
38
  it 'is not inactive' do
42
- should_not be_inactive
39
+ expect(subject).not_to be_inactive
43
40
  end
44
41
 
45
42
  it 'allows to activate the bounce' do
46
- subject.can_activate?.should be true
43
+ expect(subject.can_activate?).to be true
47
44
  end
48
45
 
49
46
  it 'has an available dump' do
50
- subject.dump_available?.should be true
47
+ expect(subject.dump_available?).to be true
51
48
  end
52
49
 
53
- its(:type) { should eq bounce_data[:type] }
54
- its(:message_id) { should eq bounce_data[:message_id] }
55
- its(:description) { should eq bounce_data[:description] }
56
- its(:details) { should eq bounce_data[:details] }
57
- its(:email) { should eq bounce_data[:email] }
58
- its(:bounced_at) { should == Time.parse(bounce_data[:bounced_at]) }
59
- its(:id) { should eq bounce_data[:id] }
60
- its(:subject) { should eq bounce_data[:subject] }
50
+ its(:type) { is_expected.to eq bounce_data[:type] }
51
+ its(:message_id) { is_expected.to eq bounce_data[:message_id] }
52
+ its(:description) { is_expected.to eq bounce_data[:description] }
53
+ its(:details) { is_expected.to eq bounce_data[:details] }
54
+ its(:email) { is_expected.to eq bounce_data[:email] }
55
+ its(:bounced_at) { is_expected.to eq Time.parse(bounce_data[:bounced_at]) }
56
+ its(:id) { is_expected.to eq bounce_data[:id] }
57
+ its(:subject) { is_expected.to eq bounce_data[:subject] }
61
58
 
62
59
  end
63
60
 
@@ -65,49 +62,44 @@ describe Postmark::Bounce do
65
62
  subject { Postmark::Bounce.new(bounce_data_postmark) }
66
63
 
67
64
  it 'is not inactive' do
68
- should_not be_inactive
65
+ expect(subject).not_to be_inactive
69
66
  end
70
67
 
71
68
  it 'allows to activate the bounce' do
72
- subject.can_activate?.should be true
69
+ expect(subject.can_activate?).to be true
73
70
  end
74
71
 
75
72
  it 'has an available dump' do
76
- subject.dump_available?.should be true
73
+ expect(subject.dump_available?).to be true
77
74
  end
78
75
 
79
- its(:type) { should eq bounce_data[:type] }
80
- its(:message_id) { should eq bounce_data[:message_id] }
81
- its(:details) { should eq bounce_data[:details] }
82
- its(:email) { should eq bounce_data[:email] }
83
- its(:bounced_at) { should == Time.parse(bounce_data[:bounced_at]) }
84
- its(:id) { should eq bounce_data[:id] }
85
- its(:subject) { should eq bounce_data[:subject] }
86
-
76
+ its(:type) { is_expected.to eq bounce_data[:type] }
77
+ its(:message_id) { is_expected.to eq bounce_data[:message_id] }
78
+ its(:details) { is_expected.to eq bounce_data[:details] }
79
+ its(:email) { is_expected.to eq bounce_data[:email] }
80
+ its(:bounced_at) { is_expected.to eq Time.parse(bounce_data[:bounced_at]) }
81
+ its(:id) { is_expected.to eq bounce_data[:id] }
82
+ its(:subject) { is_expected.to eq bounce_data[:subject] }
87
83
  end
88
84
 
89
85
  describe "#dump" do
90
-
91
86
  let(:bounce_body) { double }
92
87
  let(:response) { {:body => bounce_body} }
93
88
  let(:api_client) { Postmark.api_client }
94
89
 
95
90
  it "calls #dump_bounce on shared api_client instance" do
96
91
  expect(Postmark.api_client).to receive(:dump_bounce).with(bounce.id) { response }
97
- bounce.dump.should == bounce_body
92
+ expect(bounce.dump).to eq bounce_body
98
93
  end
99
-
100
94
  end
101
95
 
102
96
  describe "#activate" do
103
-
104
97
  let(:api_client) { Postmark.api_client }
105
98
 
106
99
  it "calls #activate_bounce on shared api_client instance" do
107
100
  expect(api_client).to receive(:activate_bounce).with(bounce.id) { bounce_data }
108
- bounce.activate.should be_a Postmark::Bounce
101
+ expect(bounce.activate).to be_a Postmark::Bounce
109
102
  end
110
-
111
103
  end
112
104
 
113
105
  describe ".find" do
@@ -115,31 +107,27 @@ describe Postmark::Bounce do
115
107
 
116
108
  it "calls #get_bounce on shared api_client instance" do
117
109
  expect(api_client).to receive(:get_bounce).with(42) { bounce_data }
118
- Postmark::Bounce.find(42).should be_a Postmark::Bounce
110
+ expect(Postmark::Bounce.find(42)).to be_a Postmark::Bounce
119
111
  end
120
112
  end
121
113
 
122
114
  describe ".all" do
123
-
124
115
  let(:response) { bounces_data }
125
116
  let(:api_client) { Postmark.api_client }
126
117
 
127
118
  it "calls #get_bounces on shared api_client instance" do
128
119
  expect(api_client).to receive(:get_bounces) { response }
129
- Postmark::Bounce.all.count.should eq(3)
120
+ expect(Postmark::Bounce.all.count).to eq(3)
130
121
  end
131
-
132
122
  end
133
123
 
134
124
  describe ".tags" do
135
-
136
125
  let(:api_client) { Postmark.api_client }
137
126
  let(:tags) { ["tag1", "tag2"] }
138
127
 
139
128
  it "calls #get_bounced_tags on shared api_client instance" do
140
129
  expect(api_client).to receive(:get_bounced_tags) { tags }
141
- Postmark::Bounce.tags.should == tags
130
+ expect(Postmark::Bounce.tags).to eq tags
142
131
  end
143
132
  end
144
-
145
133
  end