postmark 1.18.0 → 1.19.0

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.
@@ -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