mailgun-ruby 1.4.1 → 1.4.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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +30 -8
  3. data/.rubocop.yml +64 -4
  4. data/Gemfile +3 -1
  5. data/README.md +1 -1
  6. data/Rakefile +5 -8
  7. data/docs/AnalyticsTags.md +63 -0
  8. data/lib/mailgun/address.rb +5 -5
  9. data/lib/mailgun/chains.rb +2 -3
  10. data/lib/mailgun/client.rb +56 -56
  11. data/lib/mailgun/domains/domains.rb +11 -10
  12. data/lib/mailgun/events/events.rb +4 -3
  13. data/lib/mailgun/exceptions/exceptions.rb +12 -15
  14. data/lib/mailgun/helpers/api_version_checker.rb +6 -1
  15. data/lib/mailgun/lists/opt_in_handler.rb +6 -10
  16. data/lib/mailgun/logs/logs.rb +4 -2
  17. data/lib/mailgun/messages/batch_message.rb +10 -10
  18. data/lib/mailgun/messages/message_builder.rb +40 -56
  19. data/lib/mailgun/metrics/metrics.rb +12 -6
  20. data/lib/mailgun/response.rb +12 -10
  21. data/lib/mailgun/subaccounts/subaccounts.rb +13 -8
  22. data/lib/mailgun/suppressions.rb +36 -43
  23. data/lib/mailgun/tags/analytics_tags.rb +37 -2
  24. data/lib/mailgun/tags/tags.rb +29 -19
  25. data/lib/mailgun/templates/templates.rb +40 -29
  26. data/lib/mailgun/version.rb +3 -1
  27. data/lib/mailgun/webhooks/webhooks.rb +22 -19
  28. data/lib/mailgun-ruby.rb +2 -0
  29. data/lib/mailgun.rb +4 -4
  30. data/lib/railgun/attachment.rb +12 -19
  31. data/lib/railgun/errors.rb +2 -3
  32. data/lib/railgun/mailer.rb +37 -41
  33. data/lib/railgun/railtie.rb +2 -0
  34. data/lib/railgun.rb +2 -0
  35. data/mailgun.gemspec +15 -11
  36. data/spec/integration/analytics_tags_spec.rb +54 -0
  37. data/spec/integration/bounces_spec.rb +12 -11
  38. data/spec/integration/campaign_spec.rb +20 -18
  39. data/spec/integration/complaints_spec.rb +8 -6
  40. data/spec/integration/domains_spec.rb +12 -18
  41. data/spec/integration/email_validation_spec.rb +35 -34
  42. data/spec/integration/events_spec.rb +8 -8
  43. data/spec/integration/list_members_spec.rb +27 -26
  44. data/spec/integration/list_spec.rb +22 -21
  45. data/spec/integration/logs_spec.rb +49 -47
  46. data/spec/integration/mailer_spec.rb +7 -3
  47. data/spec/integration/mailgun_spec.rb +85 -92
  48. data/spec/integration/metrics_spec.rb +137 -131
  49. data/spec/integration/routes_spec.rb +41 -40
  50. data/spec/integration/stats_spec.rb +4 -2
  51. data/spec/integration/subaccounts_spec.rb +9 -10
  52. data/spec/integration/suppressions_spec.rb +222 -44
  53. data/spec/integration/templates_spec.rb +14 -12
  54. data/spec/integration/unsubscribes_spec.rb +8 -6
  55. data/spec/integration/webhook_spec.rb +18 -12
  56. data/spec/spec_helper.rb +15 -8
  57. data/spec/unit/client_spec.rb +424 -0
  58. data/spec/unit/connection/test_client.rb +108 -55
  59. data/spec/unit/events/events_spec.rb +48 -29
  60. data/spec/unit/exceptions/exceptions_spec.rb +8 -7
  61. data/spec/unit/helpers/api_version_checker_spec.rb +206 -0
  62. data/spec/unit/lists/opt_in_handler_spec.rb +11 -7
  63. data/spec/unit/mailgun_spec.rb +71 -68
  64. data/spec/unit/messages/batch_message_spec.rb +37 -36
  65. data/spec/unit/messages/message_builder_spec.rb +170 -169
  66. data/spec/unit/railgun/content_type_spec.rb +31 -30
  67. data/spec/unit/railgun/mailer_spec.rb +62 -59
  68. data/spec/unit/response_spec.rb +225 -0
  69. data/vcr_cassettes/For_the_suppressions_handling_class/creates_a_single_bounce.yml +55 -0
  70. data/vcr_cassettes/analytics_tags.yml +187 -0
  71. data/vcr_cassettes/suppressions.yml +1053 -170
  72. metadata +95 -29
  73. data/.rubocop_todo.yml +0 -22
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'stringio'
3
5
 
4
6
  describe 'MessageBuilder attribute readers' do
5
- it 'should be readable' do
6
- @mb_obj = Mailgun::MessageBuilder.new()
7
+ it 'is readable' do
8
+ @mb_obj = Mailgun::MessageBuilder.new
7
9
 
8
10
  expect(@mb_obj).to respond_to(:message)
9
11
  expect(@mb_obj).to respond_to(:counters)
@@ -11,9 +13,8 @@ describe 'MessageBuilder attribute readers' do
11
13
  end
12
14
 
13
15
  describe 'The instantiation of MessageBuilder' do
14
-
15
- before(:each) do
16
- @mb_obj = Mailgun::MessageBuilder.new()
16
+ before do
17
+ @mb_obj = Mailgun::MessageBuilder.new
17
18
  end
18
19
 
19
20
  it 'contains counters, which should be of type hash and contain several important counters' do
@@ -36,10 +37,10 @@ describe 'The instantiation of MessageBuilder' do
36
37
  end
37
38
 
38
39
  describe 'The method add_recipient' do
39
- before(:each) do
40
+ before do
40
41
  @mb_obj = Mailgun::MessageBuilder.new
41
42
  @address = 'jane@example.com'
42
- @variables = {'first' => 'Jane', 'last' => 'Doe'}
43
+ @variables = { 'first' => 'Jane', 'last' => 'Doe' }
43
44
  end
44
45
 
45
46
  it 'adds a "to" recipient type to the message body and counter is incremented' do
@@ -55,7 +56,7 @@ describe 'The method add_recipient' do
55
56
  recipient_type = :to
56
57
  @mb_obj.add_recipient(recipient_type, @address, {})
57
58
 
58
- expect(@mb_obj.message[recipient_type][0]).to eq("#{@address}")
59
+ expect(@mb_obj.message[recipient_type][0]).to eq(@address.to_s)
59
60
  expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1)
60
61
  end
61
62
  end
@@ -81,7 +82,7 @@ describe 'The method add_recipient' do
81
82
  @mb_obj.add_recipient(recipient_type, @address, @variables)
82
83
 
83
84
  expect(@mb_obj.message[recipient_type]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
84
- @mb_obj.counters[:recipients].each_value{|value| expect(value).to eq(0)}
85
+ @mb_obj.counters[:recipients].each_value { |value| expect(value).to eq(0) }
85
86
  end
86
87
 
87
88
  it 'ensures a random recipient type is added to the message body and counters are not incremented' do
@@ -89,31 +90,37 @@ describe 'The method add_recipient' do
89
90
  @mb_obj.add_recipient(recipient_type, @address, @variables)
90
91
 
91
92
  expect(@mb_obj.message[recipient_type][0]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
92
- @mb_obj.counters[:recipients].each_value{|value| expect(value).to eq(0)}
93
+ @mb_obj.counters[:recipients].each_value { |value| expect(value).to eq(0) }
93
94
  end
95
+
94
96
  it 'adds too many to recipients and raises an exception.' do
95
97
  recipient_type = :to
96
98
 
97
- expect{
99
+ expect do
98
100
  1001.times do
99
101
  @mb_obj.add_recipient(recipient_type, @address, @variables)
100
- end }.to raise_error(Mailgun::ParameterError)
102
+ end
103
+ end.to raise_error(Mailgun::ParameterError)
101
104
  end
105
+
102
106
  it 'adds too many cc recipients and raises an exception.' do
103
107
  recipient_type = :cc
104
108
 
105
- expect{
109
+ expect do
106
110
  1001.times do
107
111
  @mb_obj.add_recipient(recipient_type, @address, @variables)
108
- end }.to raise_error(Mailgun::ParameterError)
112
+ end
113
+ end.to raise_error(Mailgun::ParameterError)
109
114
  end
115
+
110
116
  it 'adds too many bcc recipients and raises an exception.' do
111
117
  recipient_type = :bcc
112
118
 
113
- expect{
119
+ expect do
114
120
  1001.times do
115
121
  @mb_obj.add_recipient(recipient_type, @address, @variables)
116
- end }.to raise_error(Mailgun::ParameterError)
122
+ end
123
+ end.to raise_error(Mailgun::ParameterError)
117
124
  end
118
125
  end
119
126
 
@@ -126,7 +133,7 @@ describe 'The method set_subject' do
126
133
  end
127
134
 
128
135
  describe 'The method subject' do
129
- before(:each) do
136
+ before do
130
137
  @mb_obj = Mailgun::MessageBuilder.new
131
138
  end
132
139
 
@@ -163,18 +170,21 @@ describe 'The method set_text_body' do
163
170
  end
164
171
 
165
172
  describe 'The method body_text' do
166
- before(:each) do
173
+ before do
167
174
  @mb_obj = Mailgun::MessageBuilder.new
168
175
  end
176
+
169
177
  it 'sets the body_text to blank if called and no parameters are provided' do
170
178
  @mb_obj.body_text
171
179
  @mb_obj.message[:text] = ''
172
180
  end
181
+
173
182
  it 'sets the message text if called with the body_text parameter' do
174
183
  the_text = 'Don\'t mess with Texas!'
175
184
  @mb_obj.body_text(the_text)
176
185
  @mb_obj.message[:text] = the_text
177
186
  end
187
+
178
188
  it 'ensures no duplicate text bodies can exist and last setter is stored' do
179
189
  the_first_text = 'Mess with Texas!'
180
190
  the_second_text = 'Don\'t mess with Texas!'
@@ -195,7 +205,6 @@ describe 'The method amp_html' do
195
205
  expect(@mb_obj.message['amp-html']).to eq(the_text)
196
206
  end
197
207
  end
198
-
199
208
 
200
209
  describe 'The method set_from_address' do
201
210
  it 'warns of set_from_address deprecation' do
@@ -206,7 +215,7 @@ describe 'The method set_from_address' do
206
215
  end
207
216
 
208
217
  describe 'The method from' do
209
- before(:each) do
218
+ before do
210
219
  @mb_obj = Mailgun::MessageBuilder.new
211
220
  end
212
221
 
@@ -221,7 +230,7 @@ describe 'The method from' do
221
230
  the_from_address = 'test@mailgun.com'
222
231
  the_first_name = 'Magilla'
223
232
  the_last_name = 'Gorilla'
224
- @mb_obj.from(the_from_address, {'first' => the_first_name, 'last' => the_last_name})
233
+ @mb_obj.from(the_from_address, { 'first' => the_first_name, 'last' => the_last_name })
225
234
 
226
235
  expect(@mb_obj.message[:from]).to eq(["'#{the_first_name} #{the_last_name}' <#{the_from_address}>"])
227
236
  end
@@ -229,7 +238,7 @@ describe 'The method from' do
229
238
  it 'sets the from address with full name metadata' do
230
239
  the_from_address = 'test@mailgun.com'
231
240
  full_name = 'Magilla Gorilla'
232
- @mb_obj.from(the_from_address, {'full_name' => full_name})
241
+ @mb_obj.from(the_from_address, { 'full_name' => full_name })
233
242
 
234
243
  expect(@mb_obj.message[:from]).to eq(["'#{full_name}' <#{the_from_address}>"])
235
244
  end
@@ -238,29 +247,29 @@ describe 'The method from' do
238
247
  the_from_address = 'test@mailgun.com'
239
248
  full_name = 'Magilla Gorilla'
240
249
  first_name = 'Magilla'
241
- expect{@mb_obj.from(the_from_address, {'full_name' => full_name, 'first' => first_name})}.to raise_error(Mailgun::ParameterError)
250
+ expect { @mb_obj.from(the_from_address, { 'full_name' => full_name, 'first' => first_name }) }.to raise_error(Mailgun::ParameterError)
242
251
  end
243
252
  end
244
253
 
245
254
  describe 'The method add_attachment' do
246
- before(:each) do
255
+ before do
247
256
  @mb_obj = Mailgun::MessageBuilder.new
248
257
  end
249
- it 'adds a few file paths to the message object' do
250
258
 
251
- file1 = File.dirname(__FILE__) + "/sample_data/mailgun_icon.png"
252
- file2 = File.dirname(__FILE__) + "/sample_data/rackspace_logo.jpg"
259
+ it 'adds a few file paths to the message object' do
260
+ file1 = "#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png"
261
+ file2 = "#{File.dirname(__FILE__)}/sample_data/rackspace_logo.jpg"
253
262
 
254
263
  file_paths = [file1, file2]
255
264
 
256
- file_paths.each {|item| @mb_obj.add_attachment(item)}
265
+ file_paths.each { |item| @mb_obj.add_attachment(item) }
257
266
 
258
267
  expect(@mb_obj.message[:attachment].length).to eq(2)
259
268
  end
260
269
 
261
270
  it 'adds file-like objects to the message object' do
262
271
  io = StringIO.new
263
- io << File.binread(File.dirname(__FILE__) + "/sample_data/mailgun_icon.png")
272
+ io << File.binread("#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png")
264
273
 
265
274
  @mb_obj.add_attachment io, 'cool_attachment.png'
266
275
 
@@ -271,7 +280,7 @@ describe 'The method add_attachment' do
271
280
 
272
281
  context 'when attachment has unknown type' do
273
282
  it 'sets content type application/octet-stream for attachment' do
274
- file = File.dirname(__FILE__) + "/sample_data/unknown.type"
283
+ file = "#{File.dirname(__FILE__)}/sample_data/unknown.type"
275
284
 
276
285
  @mb_obj.add_attachment(file)
277
286
 
@@ -281,23 +290,24 @@ describe 'The method add_attachment' do
281
290
  end
282
291
 
283
292
  describe 'The method add_inline_image' do
284
- before(:each) do
293
+ before do
285
294
  @mb_obj = Mailgun::MessageBuilder.new
286
295
  end
296
+
287
297
  it 'adds a few file paths to the message object' do
288
- file1 = File.dirname(__FILE__) + "/sample_data/mailgun_icon.png"
289
- file2 = File.dirname(__FILE__) + "/sample_data/rackspace_logo.jpg"
298
+ file1 = "#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png"
299
+ file2 = "#{File.dirname(__FILE__)}/sample_data/rackspace_logo.jpg"
290
300
 
291
301
  file_paths = [file1, file2]
292
302
 
293
- file_paths.each {|item| @mb_obj.add_inline_image(item)}
303
+ file_paths.each { |item| @mb_obj.add_inline_image(item) }
294
304
 
295
305
  expect(@mb_obj.message[:inline].length).to eq(2)
296
306
  end
297
307
  end
298
308
 
299
309
  describe 'The method list_unsubscribe' do
300
- before(:each) do
310
+ before do
301
311
  @mb_obj = Mailgun::MessageBuilder.new
302
312
  end
303
313
 
@@ -313,7 +323,7 @@ describe 'The method list_unsubscribe' do
313
323
  end
314
324
 
315
325
  it 'sets the message list_unsubscribe if called with many list_unsubscribe parameters' do
316
- unsubscribe_to = %w(http://example.com/stop-hassle mailto:stop-hassle@example.com)
326
+ unsubscribe_to = %w[http://example.com/stop-hassle mailto:stop-hassle@example.com]
317
327
  @mb_obj.list_unsubscribe(*unsubscribe_to)
318
328
  expect(@mb_obj.message['h:List-Unsubscribe']).to eq(
319
329
  unsubscribe_to.map { |var| "<#{var}>" }.join(',')
@@ -321,207 +331,195 @@ describe 'The method list_unsubscribe' do
321
331
  end
322
332
  end
323
333
 
324
- describe 'The method set_test_mode' do
325
- it 'warns of set_test_mode deprecation' do
326
- @mb_obj = Mailgun::MessageBuilder.new
327
- expect(@mb_obj).to receive :warn
328
- @mb_obj.set_test_mode 'Yes'
329
- end
330
- end
331
-
332
334
  describe 'The method test_mode' do
333
- before(:each) do
335
+ before do
334
336
  @mb_obj = Mailgun::MessageBuilder.new
335
337
  end
338
+
336
339
  it 'turns on test mode with boolean true' do
337
340
  @mb_obj.test_mode(true)
338
341
 
339
- expect(@mb_obj.message["o:testmode"][0]).to eq("yes")
342
+ expect(@mb_obj.message['o:testmode'][0]).to eq('yes')
340
343
  end
344
+
341
345
  it 'turns on test mode with string true' do
342
- @mb_obj.test_mode("true")
346
+ @mb_obj.test_mode('true')
343
347
 
344
- expect(@mb_obj.message["o:testmode"][0]).to eq("yes")
348
+ expect(@mb_obj.message['o:testmode'][0]).to eq('yes')
345
349
  end
350
+
346
351
  it 'turns off test mode with boolean false' do
347
352
  @mb_obj.test_mode(false)
348
353
 
349
- expect(@mb_obj.message["o:testmode"][0]).to eq("no")
354
+ expect(@mb_obj.message['o:testmode'][0]).to eq('no')
350
355
  end
356
+
351
357
  it 'turns off test mode with string false' do
352
- @mb_obj.test_mode("false")
358
+ @mb_obj.test_mode('false')
353
359
 
354
- expect(@mb_obj.message["o:testmode"][0]).to eq("no")
360
+ expect(@mb_obj.message['o:testmode'][0]).to eq('no')
355
361
  end
362
+
356
363
  it 'does not allow multiple values' do
357
- @mb_obj.test_mode("false")
358
- @mb_obj.test_mode("true")
359
- @mb_obj.test_mode("false")
364
+ @mb_obj.test_mode('false')
365
+ @mb_obj.test_mode('true')
366
+ @mb_obj.test_mode('false')
360
367
 
361
- expect(@mb_obj.message["o:testmode"].length).to eq(1)
362
- expect(@mb_obj.message["o:testmode"][0]).to eq("no")
363
- end
364
- end
365
-
366
- describe 'The method set_dkim' do
367
- it 'warns of set_dkim deprecation' do
368
- @mb_obj = Mailgun::MessageBuilder.new
369
- expect(@mb_obj).to receive :warn
370
- @mb_obj.set_dkim 'Yes'
368
+ expect(@mb_obj.message['o:testmode'].length).to eq(1)
369
+ expect(@mb_obj.message['o:testmode'][0]).to eq('no')
371
370
  end
372
371
  end
373
372
 
374
373
  describe 'The method dkim' do
375
- before(:each) do
374
+ before do
376
375
  @mb_obj = Mailgun::MessageBuilder.new
377
376
  end
377
+
378
378
  it 'turns on dkim with boolean true' do
379
379
  @mb_obj.dkim(true)
380
380
 
381
- expect(@mb_obj.message["o:dkim"][0]).to eq("yes")
381
+ expect(@mb_obj.message['o:dkim'][0]).to eq('yes')
382
382
  end
383
+
383
384
  it 'turns on dkim with string true' do
384
- @mb_obj.dkim("true")
385
+ @mb_obj.dkim('true')
385
386
 
386
- expect(@mb_obj.message["o:dkim"][0]).to eq("yes")
387
+ expect(@mb_obj.message['o:dkim'][0]).to eq('yes')
387
388
  end
389
+
388
390
  it 'turns off dkim with boolean false' do
389
391
  @mb_obj.dkim(false)
390
392
 
391
- expect(@mb_obj.message["o:dkim"][0]).to eq("no")
393
+ expect(@mb_obj.message['o:dkim'][0]).to eq('no')
392
394
  end
395
+
393
396
  it 'turns off dkim with string false' do
394
- @mb_obj.dkim("false")
397
+ @mb_obj.dkim('false')
395
398
 
396
- expect(@mb_obj.message["o:dkim"][0]).to eq("no")
399
+ expect(@mb_obj.message['o:dkim'][0]).to eq('no')
397
400
  end
401
+
398
402
  it 'does not allow multiple values' do
399
- @mb_obj.dkim("false")
400
- @mb_obj.dkim("true")
401
- @mb_obj.dkim("false")
403
+ @mb_obj.dkim('false')
404
+ @mb_obj.dkim('true')
405
+ @mb_obj.dkim('false')
402
406
 
403
- expect(@mb_obj.message["o:dkim"].length).to eq(1)
404
- expect(@mb_obj.message["o:dkim"][0]).to eq("no")
407
+ expect(@mb_obj.message['o:dkim'].length).to eq(1)
408
+ expect(@mb_obj.message['o:dkim'][0]).to eq('no')
405
409
  end
406
410
  end
407
411
 
408
412
  describe 'The method add_campaign_id' do
409
- before(:each) do
413
+ before do
410
414
  @mb_obj = Mailgun::MessageBuilder.new
411
415
  end
416
+
412
417
  it 'adds a campaign ID to the message' do
413
418
  @mb_obj.add_campaign_id('My-Campaign-Id-1')
414
419
 
415
- expect(@mb_obj.message["o:campaign"][0]).to eq ("My-Campaign-Id-1")
420
+ expect(@mb_obj.message['o:campaign'][0]).to eq('My-Campaign-Id-1')
416
421
  end
422
+
417
423
  it 'adds a few more campaign IDs to the message' do
418
424
  @mb_obj.add_campaign_id('My-Campaign-Id-1')
419
425
  @mb_obj.add_campaign_id('My-Campaign-Id-2')
420
426
  @mb_obj.add_campaign_id('My-Campaign-Id-3')
421
427
 
422
- expect(@mb_obj.message["o:campaign"][0]).to eq("My-Campaign-Id-1")
423
- expect(@mb_obj.message["o:campaign"][1]).to eq("My-Campaign-Id-2")
424
- expect(@mb_obj.message["o:campaign"][2]).to eq("My-Campaign-Id-3")
428
+ expect(@mb_obj.message['o:campaign'][0]).to eq('My-Campaign-Id-1')
429
+ expect(@mb_obj.message['o:campaign'][1]).to eq('My-Campaign-Id-2')
430
+ expect(@mb_obj.message['o:campaign'][2]).to eq('My-Campaign-Id-3')
425
431
  end
432
+
426
433
  it 'adds too many campaign IDs to the message' do
427
- expect{
434
+ expect do
428
435
  10.times do
429
436
  @mb_obj.add_campaign_id('Test-Campaign-ID')
430
- end }.to raise_error(Mailgun::ParameterError)
437
+ end
438
+ end.to raise_error(Mailgun::ParameterError)
431
439
  end
432
440
  end
433
441
 
434
442
  describe 'The method add_tag' do
435
- before(:each) do
443
+ before do
436
444
  @mb_obj = Mailgun::MessageBuilder.new
437
445
  end
446
+
438
447
  it 'adds a tag to the message' do
439
448
  @mb_obj.add_tag('My-Tag-1')
440
449
 
441
- expect(@mb_obj.message["o:tag"][0]).to eq("My-Tag-1")
450
+ expect(@mb_obj.message['o:tag'][0]).to eq('My-Tag-1')
442
451
  end
452
+
443
453
  it 'adds a few more tags to the message' do
444
454
  @mb_obj.add_tag('My-Tag-1')
445
455
  @mb_obj.add_tag('My-Tag-2')
446
456
  @mb_obj.add_tag('My-Tag-3')
447
457
 
448
- expect(@mb_obj.message["o:tag"][0]).to eq("My-Tag-1")
449
- expect(@mb_obj.message["o:tag"][1]).to eq("My-Tag-2")
450
- expect(@mb_obj.message["o:tag"][2]).to eq("My-Tag-3")
458
+ expect(@mb_obj.message['o:tag'][0]).to eq('My-Tag-1')
459
+ expect(@mb_obj.message['o:tag'][1]).to eq('My-Tag-2')
460
+ expect(@mb_obj.message['o:tag'][2]).to eq('My-Tag-3')
451
461
  end
462
+
452
463
  it 'adds too many tags to the message' do
453
- expect{
464
+ expect do
454
465
  12.times do
455
466
  @mb_obj.add_tag('My-Tag')
456
- end }.to raise_error(Mailgun::ParameterError)
457
- end
458
- end
459
-
460
- describe 'The method set_open_tracking' do
461
- it 'warns of set_open_tracking deprecation' do
462
- @mb_obj = Mailgun::MessageBuilder.new
463
- expect(@mb_obj).to receive :warn
464
- @mb_obj.set_open_tracking 'Yes'
467
+ end
468
+ end.to raise_error(Mailgun::ParameterError)
465
469
  end
466
470
  end
467
471
 
468
472
  describe 'The method track_opens' do
469
- before(:each) do
473
+ before do
470
474
  @mb_obj = Mailgun::MessageBuilder.new
471
475
  end
476
+
472
477
  it 'enables/disables open tracking on a per message basis.' do
473
478
  @mb_obj.track_opens('Yes')
474
479
 
475
- expect(@mb_obj.message["o:tracking-opens"]).to eq("yes")
476
- expect(@mb_obj.message["o:tracking"]).to eq(["yes"])
480
+ expect(@mb_obj.message['o:tracking-opens']).to eq('yes')
481
+ expect(@mb_obj.message['o:tracking']).to eq(['yes'])
477
482
 
478
483
  @mb_obj.track_opens('No')
479
484
 
480
- expect(@mb_obj.message["o:tracking-opens"]).to eq("no")
485
+ expect(@mb_obj.message['o:tracking-opens']).to eq('no')
481
486
 
482
487
  @mb_obj.track_opens(true)
483
488
 
484
- expect(@mb_obj.message["o:tracking-opens"]).to eq("yes")
489
+ expect(@mb_obj.message['o:tracking-opens']).to eq('yes')
485
490
 
486
491
  @mb_obj.track_opens(false)
487
492
 
488
- expect(@mb_obj.message["o:tracking-opens"]).to eq("no")
489
- end
490
- end
491
-
492
- describe 'The method set_click_tracking' do
493
- it 'warns of set_click_tracking deprecation' do
494
- @mb_obj = Mailgun::MessageBuilder.new
495
- expect(@mb_obj).to receive :warn
496
- @mb_obj.set_click_tracking 'Yes'
493
+ expect(@mb_obj.message['o:tracking-opens']).to eq('no')
497
494
  end
498
495
  end
499
496
 
500
497
  describe 'The method track_clicks' do
501
- before(:each) do
498
+ before do
502
499
  @mb_obj = Mailgun::MessageBuilder.new
503
500
  end
501
+
504
502
  it 'enables/disables click tracking on a per message basis.' do
505
503
  @mb_obj.track_clicks('Yes')
506
504
 
507
- expect(@mb_obj.message["o:tracking-clicks"]).to eq("yes")
508
- expect(@mb_obj.message["o:tracking"]).to eq(["yes"])
505
+ expect(@mb_obj.message['o:tracking-clicks']).to eq('yes')
506
+ expect(@mb_obj.message['o:tracking']).to eq(['yes'])
509
507
 
510
508
  @mb_obj.track_clicks('No')
511
509
 
512
- expect(@mb_obj.message["o:tracking-clicks"]).to eq("no")
510
+ expect(@mb_obj.message['o:tracking-clicks']).to eq('no')
513
511
 
514
512
  @mb_obj.track_clicks(true)
515
513
 
516
- expect(@mb_obj.message["o:tracking-clicks"]).to eq("yes")
514
+ expect(@mb_obj.message['o:tracking-clicks']).to eq('yes')
517
515
 
518
516
  @mb_obj.track_clicks(false)
519
517
 
520
- expect(@mb_obj.message["o:tracking-clicks"]).to eq("no")
518
+ expect(@mb_obj.message['o:tracking-clicks']).to eq('no')
521
519
 
522
520
  @mb_obj.track_clicks('html')
523
521
 
524
- expect(@mb_obj.message["o:tracking-clicks"]).to eq("html")
522
+ expect(@mb_obj.message['o:tracking-clicks']).to eq('html')
525
523
  end
526
524
 
527
525
  context 'when unexpected value is provided' do
@@ -532,22 +530,15 @@ describe 'The method track_clicks' do
532
530
  end
533
531
  end
534
532
 
535
- describe 'The method set_delivery_time' do
536
- it 'warns of set_delivery_time deprecation' do
537
- @mb_obj = Mailgun::MessageBuilder.new
538
- expect(@mb_obj).to receive :warn
539
- @mb_obj.set_delivery_time 'October 25, 2013 10:00PM CST'
540
- end
541
- end
542
-
543
533
  describe 'The method deliver_at' do
544
- before(:each) do
534
+ before do
545
535
  @mb_obj = Mailgun::MessageBuilder.new
546
536
  end
537
+
547
538
  it 'defines a time/date to deliver a message in RFC2822 format.' do
548
539
  @mb_obj.deliver_at('October 25, 2013 10:00PM CST')
549
540
 
550
- expect(@mb_obj.message["o:deliverytime"][0]).to eq("Fri, 25 Oct 2013 22:00:00 -0600")
541
+ expect(@mb_obj.message['o:deliverytime'][0]).to eq('Fri, 25 Oct 2013 22:00:00 -0600')
551
542
  end
552
543
  end
553
544
 
@@ -560,52 +551,57 @@ describe 'The method set_custom_data' do
560
551
  end
561
552
 
562
553
  describe 'The method header' do
563
- before(:each) do
554
+ before do
564
555
  @mb_obj = Mailgun::MessageBuilder.new
565
556
  end
557
+
566
558
  it 'accepts valid JSON and appends as data to the message.' do
567
559
  @mb_obj.header('my-data', '{"key":"value"}')
568
560
 
569
- expect(@mb_obj.message["h:my-data"]).to be_kind_of(String)
570
- expect(@mb_obj.message["h:my-data"].to_s).to eq('{"key":"value"}')
561
+ expect(@mb_obj.message['h:my-data']).to be_a(String)
562
+ expect(@mb_obj.message['h:my-data'].to_s).to eq('{"key":"value"}')
571
563
  end
572
564
  end
573
565
 
574
566
  describe 'The method variable' do
575
- before(:each) do
567
+ before do
576
568
  @mb_obj = Mailgun::MessageBuilder.new
577
569
  end
570
+
578
571
  it 'accepts valid JSON and stores it as message[param].' do
579
572
  @mb_obj.variable('my-data', '{"key":"value"}')
580
573
 
581
- expect(@mb_obj.message["v:my-data"]).to be_kind_of(String)
582
- expect(@mb_obj.message["v:my-data"].to_s).to eq('{"key":"value"}')
574
+ expect(@mb_obj.message['v:my-data']).to be_a(String)
575
+ expect(@mb_obj.message['v:my-data'].to_s).to eq('{"key":"value"}')
583
576
  end
577
+
584
578
  it 'accepts a hash and appends as data to the message.' do
585
- data = {'key' => 'value'}
579
+ data = { 'key' => 'value' }
586
580
  @mb_obj.variable('my-data', data)
587
581
 
588
- expect(@mb_obj.message["v:my-data"]).to be_kind_of(String)
589
- expect(@mb_obj.message["v:my-data"].to_s).to eq('{"key":"value"}')
582
+ expect(@mb_obj.message['v:my-data']).to be_a(String)
583
+ expect(@mb_obj.message['v:my-data'].to_s).to eq('{"key":"value"}')
590
584
  end
585
+
591
586
  it 'accepts string values' do
592
587
  data = 'String Value.'
593
588
 
594
589
  @mb_obj.variable('my-data', data)
595
590
 
596
- expect(@mb_obj.message["v:my-data"]).to be_kind_of(String)
597
- expect(@mb_obj.message["v:my-data"].to_s).to eq('String Value.')
591
+ expect(@mb_obj.message['v:my-data']).to be_a(String)
592
+ expect(@mb_obj.message['v:my-data'].to_s).to eq('String Value.')
598
593
  end
599
594
  end
600
595
 
601
596
  describe 'The method add_custom_parameter' do
602
- before(:each) do
597
+ before do
603
598
  @mb_obj = Mailgun::MessageBuilder.new
604
599
  end
600
+
605
601
  it 'adds an undefined parameter to the message.' do
606
602
  @mb_obj.add_custom_parameter('h:my-sweet-header', 'datagoeshere')
607
603
 
608
- expect(@mb_obj.message["h:my-sweet-header"][0]).to eq("datagoeshere")
604
+ expect(@mb_obj.message['h:my-sweet-header'][0]).to eq('datagoeshere')
609
605
  end
610
606
  end
611
607
 
@@ -618,35 +614,39 @@ describe 'The method set_message_id' do
618
614
  end
619
615
 
620
616
  describe 'The method message_id' do
621
- before(:each) do
617
+ before do
622
618
  @mb_obj = Mailgun::MessageBuilder.new
623
619
  @the_message_id = '<20141014000000.11111.11111@example.com>'
624
620
  end
621
+
625
622
  it 'correctly sets the Message-Id header' do
626
623
  @mb_obj.message_id(@the_message_id)
627
624
 
628
625
  expect(@mb_obj.message['h:Message-Id']).to eq(@the_message_id)
629
626
  end
627
+
630
628
  it 'correctly clears the Message-Id header when passed nil' do
631
629
  @mb_obj.message_id(nil)
632
630
 
633
- expect(@mb_obj.message.has_key?('h:Message-Id')).to eq(false)
631
+ expect(@mb_obj.message.key?('h:Message-Id')).to be(false)
634
632
  end
633
+
635
634
  it 'correctly sets the Message-Id header when passed an empty string' do
636
635
  @mb_obj.message_id(@the_message_id)
637
636
 
638
- expect(@mb_obj.message.has_key?('h:Message-Id')).to eq(true)
637
+ expect(@mb_obj.message.key?('h:Message-Id')).to be(true)
639
638
 
640
639
  @mb_obj.message_id('')
641
640
 
642
- expect(@mb_obj.message.has_key?('h:Message-Id')).to eq(false)
641
+ expect(@mb_obj.message.key?('h:Message-Id')).to be(false)
643
642
  end
644
643
  end
645
644
 
646
645
  describe 'The method template' do
647
- before(:each) do
646
+ before do
648
647
  @mb_obj = Mailgun::MessageBuilder.new
649
648
  end
649
+
650
650
  context 'when template name is passed' do
651
651
  it 'sets `template` to the message' do
652
652
  template_name = 'template.name'
@@ -658,33 +658,34 @@ describe 'The method template' do
658
658
 
659
659
  context 'when multiple values are passed' do
660
660
  it 'sets the last value as message template' do
661
- template_name_1 = 'template.name_1'
662
- template_name_2 = 'template.name_2'
661
+ template_name1 = 'template.name_1'
662
+ template_name2 = 'template.name_2'
663
663
 
664
- @mb_obj.template(template_name_1)
665
- @mb_obj.template(template_name_2)
664
+ @mb_obj.template(template_name1)
665
+ @mb_obj.template(template_name2)
666
666
 
667
- expect(@mb_obj.message['template']).to eq(template_name_2)
667
+ expect(@mb_obj.message['template']).to eq(template_name2)
668
668
  end
669
669
  end
670
670
 
671
671
  context 'when template name is not passed' do
672
- it 'it deletes `template` key from the message' do
672
+ it 'deletes `template` key from the message' do
673
673
  @mb_obj.template('template.name')
674
674
 
675
- expect(@mb_obj.message.has_key?('template')).to eq(true)
675
+ expect(@mb_obj.message.key?('template')).to be(true)
676
676
 
677
677
  @mb_obj.template
678
678
 
679
- expect(@mb_obj.message.has_key?('template')).to eq(false)
679
+ expect(@mb_obj.message.key?('template')).to be(false)
680
680
  end
681
681
  end
682
682
  end
683
683
 
684
684
  describe 'The method template_version' do
685
- before(:each) do
685
+ before do
686
686
  @mb_obj = Mailgun::MessageBuilder.new
687
687
  end
688
+
688
689
  context 'when template version is passed' do
689
690
  it 'adds `t:version` key value to the message' do
690
691
  version = 'version_1'
@@ -696,49 +697,49 @@ describe 'The method template_version' do
696
697
 
697
698
  context 'when multiple values are passed' do
698
699
  it 'adds the last value as `t:version` key value to the message' do
699
- version_1 = 'version_1'
700
- version_2 = 'version_2'
700
+ version1 = 'version_1'
701
+ version2 = 'version_2'
701
702
 
702
- @mb_obj.template_version(version_1)
703
- @mb_obj.template_version(version_2)
703
+ @mb_obj.template_version(version1)
704
+ @mb_obj.template_version(version2)
704
705
 
705
- expect(@mb_obj.message['t:version']).to eq(version_2)
706
+ expect(@mb_obj.message['t:version']).to eq(version2)
706
707
  end
707
708
  end
708
709
 
709
710
  context 'when version is not passed' do
710
- it 'it deletes `t:version` key from the message' do
711
+ it 'deletes `t:version` key from the message' do
711
712
  @mb_obj.template_version('version')
712
713
 
713
- expect(@mb_obj.message.has_key?('t:version')).to eq(true)
714
+ expect(@mb_obj.message.key?('t:version')).to be(true)
714
715
 
715
716
  @mb_obj.template_version
716
717
 
717
- expect(@mb_obj.message.has_key?('t:version')).to eq(false)
718
+ expect(@mb_obj.message.key?('t:version')).to be(false)
718
719
  end
719
720
  end
720
721
  end
721
722
 
722
723
  describe 'The method template_text' do
723
- before(:each) do
724
+ before do
724
725
  @mb_obj = Mailgun::MessageBuilder.new
725
726
  end
726
727
 
727
728
  it 'enables/disables rendering in the text part of the message in case of template sending' do
728
729
  @mb_obj.template_text('Yes')
729
730
 
730
- expect(@mb_obj.message["t:text"]).to eq("yes")
731
+ expect(@mb_obj.message['t:text']).to eq('yes')
731
732
 
732
733
  @mb_obj.template_text('No')
733
734
 
734
- expect(@mb_obj.message["t:text"]).to eq("no")
735
+ expect(@mb_obj.message['t:text']).to eq('no')
735
736
 
736
737
  @mb_obj.template_text(true)
737
738
 
738
- expect(@mb_obj.message["t:text"]).to eq("yes")
739
+ expect(@mb_obj.message['t:text']).to eq('yes')
739
740
 
740
741
  @mb_obj.template_text(false)
741
742
 
742
- expect(@mb_obj.message["t:text"]).to eq("no")
743
+ expect(@mb_obj.message['t:text']).to eq('no')
743
744
  end
744
745
  end