mailgun-ruby 1.4.5 → 1.4.6

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