sendgrid4r 1.1.0 → 1.2.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.
@@ -0,0 +1,454 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../../spec_helper'
3
+
4
+ describe SendGrid4r::REST::Campaigns::Campaigns do
5
+ describe 'integration test', :it do
6
+ before do
7
+ begin
8
+ Dotenv.load
9
+ @client = SendGrid4r::Client.new(api_key: ENV['API_KEY'])
10
+ @title1 = 'Test Title1'
11
+ @title2 = 'Test Title2'
12
+ @title1_edit = 'Edit Title1'
13
+ @subject1 = 'Subject1'
14
+ @subject2 = 'Subject2'
15
+
16
+ @email1 = 'test@example.com'
17
+ @last_name1 = 'Last Name1'
18
+ @list_name1 = 'List Name1'
19
+ @group_name1 = 'Group Name1'
20
+
21
+ # celan up test env
22
+ # delete campaigns
23
+ campaigns = @client.get_campaigns
24
+ campaigns.result.each do |campaign|
25
+ @client.delete_campaign(
26
+ campaign_id: campaign.id
27
+ ) if campaign.title == @title1
28
+ @client.delete_campaign(
29
+ campaign_id: campaign.id
30
+ ) if campaign.title == @title2
31
+ @client.delete_campaign(
32
+ campaign_id: campaign.id
33
+ ) if campaign.title == @title1_edit
34
+ end
35
+ # delete recipients
36
+ recipients = @client.get_recipients
37
+ recipients.recipients.each do |recipient|
38
+ next if recipient.email != @email1
39
+ @client.delete_recipient(recipient_id: recipient.id)
40
+ end
41
+ # delete lists
42
+ lists = @client.get_lists
43
+ lists.lists.each do |list|
44
+ next if list.name != @list_name1
45
+ @client.delete_list(list_id: list.id)
46
+ end
47
+ # delete suppression groups
48
+ grps = @client.get_groups
49
+ grps.each do |grp|
50
+ next if grp.name != @group_name1
51
+ @client.delete_group(group_id: grp.id)
52
+ end
53
+ # post a recipient
54
+ recipient1 = {}
55
+ recipient1['email'] = @email1
56
+ recipient1['last_name'] = @last_name1
57
+ @result = @client.post_recipients(params: [recipient1])
58
+ # post a list
59
+ @list1 = @client.post_list(name: @list_name1)
60
+ # add a recipient to the list
61
+ @client.post_recipient_to_list(
62
+ list_id: @list1.id, recipient_id: @result.persisted_recipients[0]
63
+ )
64
+ # add agroup
65
+ @group1 = @client.post_group(name: @group_name1, description: 'test')
66
+ # add a campaign
67
+ @campaign_factory = SendGrid4r::Factory::CampaignFactory.new
68
+ @params = @campaign_factory.create(
69
+ title: @title1, subject: @subject1, sender_id: 493,
70
+ list_ids: [@list1.id], categories: ['cat1'],
71
+ suppression_group_id: @group1.id, html_content: 'html',
72
+ plain_content: 'plain')
73
+ @campaign1 = @client.post_campaign(params: @params)
74
+ rescue RestClient::ExceptionWithResponse => e
75
+ puts e.inspect
76
+ raise e
77
+ end
78
+ end
79
+
80
+ context 'without block call' do
81
+ it '#post_campaign' do
82
+ begin
83
+ params = @campaign_factory.create(
84
+ title: @title2, subject: @subject2, sender_id: 493,
85
+ list_ids: [@list1.id], categories: ['cat1'],
86
+ suppression_group_id: @group1.id, html_content: 'html',
87
+ plain_content: 'plain')
88
+ campaign2 = @client.post_campaign(params: params)
89
+ expect(campaign2.title).to eq(@title2)
90
+ expect(campaign2.subject).to eq(@subject2)
91
+ expect(campaign2.sender_id).to eq(493)
92
+ expect(campaign2.list_ids).to eq([@list1.id])
93
+ expect(campaign2.categories).to eq(['cat1'])
94
+ expect(campaign2.suppression_group_id).to eq(@group1.id)
95
+ expect(campaign2.html_content).to eq('html')
96
+ expect(campaign2.plain_content).to eq('plain')
97
+ rescue RestClient::ExceptionWithResponse => e
98
+ puts e.inspect
99
+ raise e
100
+ end
101
+ end
102
+
103
+ it '#get_campaigns' do
104
+ begin
105
+ campaigns = @client.get_campaigns
106
+ expect(campaigns.length).to be >= 1
107
+ campaigns.result.each do |campaign|
108
+ next if campaign.title != @title1
109
+ expect(campaign.title).to eq(@title1)
110
+ end
111
+ rescue RestClient::ExceptionWithResponse => e
112
+ puts e.inspect
113
+ raise e
114
+ end
115
+ end
116
+
117
+ it '#get_campaign' do
118
+ begin
119
+ campaign = @client.get_campaign(campaign_id: @campaign1.id)
120
+ expect(campaign).to eq(@campaign1)
121
+ rescue RestClient::ExceptionWithResponse => e
122
+ puts e.inspect
123
+ raise e
124
+ end
125
+ end
126
+
127
+ it '#delete_campaign' do
128
+ begin
129
+ @client.delete_campaign(campaign_id: @campaign1.id)
130
+ expect do
131
+ @client.delete_campaign(campaign_id: @campaign1.id)
132
+ end.to raise_error(RestClient::ResourceNotFound)
133
+ rescue RestClient::ExceptionWithResponse => e
134
+ puts e.inspect
135
+ raise e
136
+ end
137
+ end
138
+
139
+ it '#patch_campaign' do
140
+ begin
141
+ @campaign1.title = @title1_edit
142
+ actual = @client.patch_campaign(
143
+ campaign_id: @campaign1.id, params: @campaign1
144
+ )
145
+ expect(actual.title).to eq(@title1_edit)
146
+ rescue RestClient::ExceptionWithResponse => e
147
+ puts e.inspect
148
+ raise e
149
+ end
150
+ end
151
+
152
+ it '#send_campaign' do
153
+ begin
154
+ actual = @client.send_campaign(campaign_id: @campaign1.id)
155
+ expect(actual.id).to eq(@campaign1.id)
156
+ expect(actual.status).to eq('Scheduled')
157
+ rescue RestClient::ExceptionWithResponse => e
158
+ puts e.inspect
159
+ raise e
160
+ end
161
+ end
162
+
163
+ it '#schedule_campaign' do
164
+ begin
165
+ send_at = Time.new(2015, 12, 12, 12, 34, 56)
166
+ actual = @client.schedule_campaign(
167
+ campaign_id: @campaign1.id,
168
+ send_at: send_at
169
+ )
170
+ expect(actual.id).to eq(@campaign1.id)
171
+ expect(actual.status).to eq('Scheduled')
172
+ expect(actual.send_at).to eq(send_at)
173
+ rescue RestClient::ExceptionWithResponse => e
174
+ puts e.inspect
175
+ raise e
176
+ end
177
+ end
178
+
179
+ it '#reschedule_campaign' do
180
+ begin
181
+ send_at = Time.new(2015, 12, 12, 12, 34, 56)
182
+ @client.schedule_campaign(
183
+ campaign_id: @campaign1.id,
184
+ send_at: send_at
185
+ )
186
+ send_at = Time.new(2015, 11, 11, 11, 11, 11)
187
+ actual = @client.reschedule_campaign(
188
+ campaign_id: @campaign1.id,
189
+ send_at: send_at
190
+ )
191
+ expect(actual.id).to eq(@campaign1.id)
192
+ expect(actual.status).to eq('Scheduled')
193
+ expect(actual.send_at).to eq(send_at)
194
+ rescue RestClient::ExceptionWithResponse => e
195
+ puts e.inspect
196
+ raise e
197
+ end
198
+ end
199
+
200
+ it '#get_schedule_time_campaign' do
201
+ begin
202
+ send_at = Time.new(2015, 12, 12, 12, 34, 56)
203
+ @client.schedule_campaign(
204
+ campaign_id: @campaign1.id,
205
+ send_at: send_at
206
+ )
207
+ actual = @client.get_schedule_time_campaign(
208
+ campaign_id: @campaign1.id
209
+ )
210
+ expect(actual.send_at).to eq(send_at)
211
+ rescue RestClient::ExceptionWithResponse => e
212
+ puts e.inspect
213
+ raise e
214
+ end
215
+ end
216
+
217
+ it '#unschedule_campaign' do
218
+ begin
219
+ send_at = Time.new(2015, 12, 12, 12, 34, 56)
220
+ @client.schedule_campaign(
221
+ campaign_id: @campaign1.id, send_at: send_at
222
+ )
223
+ @client.unschedule_campaign(campaign_id: @campaign1.id)
224
+ rescue RestClient::ExceptionWithResponse => e
225
+ puts e.inspect
226
+ raise e
227
+ end
228
+ end
229
+
230
+ it '#test_campaign' do
231
+ begin
232
+ @client.test_campaign(campaign_id: @campaign1.id, to: ENV['MAIL'])
233
+ rescue RestClient::ExceptionWithResponse => e
234
+ puts e.inspect
235
+ raise e
236
+ end
237
+ end
238
+ end
239
+ end
240
+
241
+ describe 'unit test', :ut do
242
+ let(:client) do
243
+ SendGrid4r::Client.new(api_key: '')
244
+ end
245
+
246
+ let(:campaign) do
247
+ JSON.parse(
248
+ '{'\
249
+ '"id": 986724,'\
250
+ '"title": "March Newsletter",'\
251
+ '"subject": "New Products for Spring!",'\
252
+ '"sender_id": 124451,'\
253
+ '"list_ids": ['\
254
+ '110,'\
255
+ '124'\
256
+ '],'\
257
+ '"segment_ids": ['\
258
+ '110'\
259
+ '],'\
260
+ '"categories": ['\
261
+ '"spring line"'\
262
+ '],'\
263
+ '"suppression_group_id": 42,'\
264
+ '"html_content": "<html><head><title></title></head><body>'\
265
+ '<p>Check out our spring line!</p></body></html>",'\
266
+ '"plain_content": "Check out our spring line!",'\
267
+ '"status": "Draft"'\
268
+ '}'
269
+ )
270
+ end
271
+
272
+ let(:campaigns) do
273
+ JSON.parse(
274
+ '{'\
275
+ '"result": ['\
276
+ '{'\
277
+ '"id": 986724,'\
278
+ '"title": "March Newsletter",'\
279
+ '"subject": "New Products for Spring!",'\
280
+ '"sender_id": 124451,'\
281
+ '"list_ids": ['\
282
+ '110,'\
283
+ '124'\
284
+ '],'\
285
+ '"segment_ids": ['\
286
+ '110'\
287
+ '],'\
288
+ '"categories": ['\
289
+ '"spring line"'\
290
+ '],'\
291
+ '"suppression_group_id": 42,'\
292
+ '"html_content": "<html><head><title></title></head><body>'\
293
+ '<p>Check out our spring line!</p></body></html>",'\
294
+ '"plain_content": "Check out our spring line!",'\
295
+ '"status": "Draft"'\
296
+ '},'\
297
+ '{'\
298
+ '"id": 986723,'\
299
+ '"title": "February Newsletter",'\
300
+ '"subject": "Final Winter Product Sale!",'\
301
+ '"sender_id": 124451,'\
302
+ '"list_ids": ['\
303
+ '110,'\
304
+ '124'\
305
+ '],'\
306
+ '"segment_ids": ['\
307
+ '110'\
308
+ '],'\
309
+ '"categories": ['\
310
+ '"winter line"'\
311
+ '],'\
312
+ '"suppression_group_id": 42,'\
313
+ '"html_content": "<html><head><title></title></head><body>'\
314
+ '<p>Last call for winter clothes!</p></body></html>",'\
315
+ '"plain_content": "Last call for winter clothes!",'\
316
+ '"status": "Sent"'\
317
+ '}'\
318
+ ']'\
319
+ '}'
320
+ )
321
+ end
322
+
323
+ let(:sent) do
324
+ JSON.parse(
325
+ '{'\
326
+ '"id": 986724,'\
327
+ '"status": "Scheduled"'\
328
+ '}'
329
+ )
330
+ end
331
+
332
+ let(:schedule) do
333
+ JSON.parse(
334
+ '{'\
335
+ '"id": 986724,'\
336
+ '"send_at": 1489771528,'\
337
+ '"status": "Scheduled"'\
338
+ '}'
339
+ )
340
+ end
341
+
342
+ it '#post_campaign' do
343
+ allow(client).to receive(:execute).and_return(campaign)
344
+ actual = client.post_campaign(params: nil)
345
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
346
+ end
347
+
348
+ it '#get_campaigns' do
349
+ allow(client).to receive(:execute).and_return(campaigns)
350
+ actual = client.get_campaigns
351
+ expect(actual).to be_a(
352
+ SendGrid4r::REST::Campaigns::Campaigns::Campaigns
353
+ )
354
+ end
355
+
356
+ it '#get_campaign' do
357
+ allow(client).to receive(:execute).and_return(campaign)
358
+ actual = client.get_campaign(campaign_id: 0)
359
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
360
+ end
361
+
362
+ it '#delete_campaign' do
363
+ allow(client).to receive(:execute).and_return('')
364
+ client.delete_campaign(campaign_id: 0)
365
+ end
366
+
367
+ it '#patch_campaign' do
368
+ allow(client).to receive(:execute).and_return(campaign)
369
+ actual = client.patch_campaign(campaign_id: 0, params: nil)
370
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
371
+ end
372
+
373
+ it '#send_campaign' do
374
+ allow(client).to receive(:execute).and_return(sent)
375
+ actual = client.send_campaign(campaign_id: 0)
376
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
377
+ end
378
+
379
+ it '#schedule_campaign' do
380
+ allow(client).to receive(:execute).and_return(schedule)
381
+ actual = client.schedule_campaign(campaign_id: 0, send_at: nil)
382
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
383
+ end
384
+
385
+ it '#reschedule_campaign' do
386
+ allow(client).to receive(:execute).and_return(schedule)
387
+ actual = client.reschedule_campaign(campaign_id: 0, send_at: nil)
388
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
389
+ end
390
+
391
+ it '#get_schedule_time_campaign' do
392
+ allow(client).to receive(:execute).and_return(schedule)
393
+ actual = client.get_schedule_time_campaign(campaign_id: 0)
394
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
395
+ end
396
+
397
+ it '#unschedule_campaign' do
398
+ allow(client).to receive(:execute).and_return('')
399
+ actual = client.unschedule_campaign(campaign_id: 0)
400
+ expect(actual).to eq('')
401
+ end
402
+
403
+ it '#test_campaign' do
404
+ allow(client).to receive(:execute).and_return('')
405
+ actual = client.test_campaign(campaign_id: 0, to: '')
406
+ expect(actual).to eq('')
407
+ end
408
+
409
+ it 'creates campaign instance' do
410
+ actual = SendGrid4r::REST::Campaigns::Campaigns.create_campaign(campaign)
411
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
412
+ expect(actual.id).to eq(986724)
413
+ expect(actual.title).to eq('March Newsletter')
414
+ expect(actual.subject).to eq('New Products for Spring!')
415
+ expect(actual.sender_id).to eq(124451)
416
+ expect(actual.list_ids).to eq([110, 124])
417
+ expect(actual.segment_ids).to eq([110])
418
+ expect(actual.categories).to eq(['spring line'])
419
+ expect(actual.suppression_group_id).to eq(42)
420
+ expect(actual.html_content).to eq(
421
+ '<html><head><title></title></head><body>'\
422
+ '<p>Check out our spring line!</p></body></html>')
423
+ expect(actual.plain_content).to eq('Check out our spring line!')
424
+ expect(actual.status).to eq('Draft')
425
+ end
426
+
427
+ it 'creates campaigns instance' do
428
+ actual = SendGrid4r::REST::Campaigns::Campaigns.create_campaigns(
429
+ campaigns
430
+ )
431
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaigns)
432
+ actual.result.each do |campaign|
433
+ expect(campaign).to be_a(
434
+ SendGrid4r::REST::Campaigns::Campaigns::Campaign
435
+ )
436
+ end
437
+ end
438
+
439
+ it 'creates sent instance' do
440
+ actual = SendGrid4r::REST::Campaigns::Campaigns.create_campaign(sent)
441
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
442
+ expect(actual.id).to eq(986724)
443
+ expect(actual.status).to eq('Scheduled')
444
+ end
445
+
446
+ it 'creates schedule instance' do
447
+ actual = SendGrid4r::REST::Campaigns::Campaigns.create_campaign(schedule)
448
+ expect(actual).to be_a(SendGrid4r::REST::Campaigns::Campaigns::Campaign)
449
+ expect(actual.id).to eq(986724)
450
+ expect(actual.send_at).to eq(Time.at(1489771528))
451
+ expect(actual.status).to eq('Scheduled')
452
+ end
453
+ end
454
+ end
@@ -5,7 +5,6 @@ describe SendGrid4r::REST::Contacts::Lists do
5
5
  describe 'integration test', :it do
6
6
  before do
7
7
  begin
8
- pending 'waiting sendgrid documentation update'
9
8
  Dotenv.load
10
9
  @client = SendGrid4r::Client.new(api_key: ENV['API_KEY'])
11
10
  @list_name1 = 'test_list1'
@@ -18,7 +17,6 @@ describe SendGrid4r::REST::Contacts::Lists do
18
17
  @pet1 = 'Fluffy'
19
18
  @pet2 = 'FrouFrou'
20
19
  @custom_field_name = 'pet'
21
- @recipients = [@email1, @email2]
22
20
 
23
21
  # celan up test env(lists)
24
22
  lists = @client.get_lists
@@ -44,17 +42,17 @@ describe SendGrid4r::REST::Contacts::Lists do
44
42
  recipient1['email'] = @email1
45
43
  recipient1['last_name'] = @last_name1
46
44
  recipient1[@custom_field_name] = @pet1
47
- recipient1 = @client.post_recipient(params: recipient1)
48
- @client.post_recipient_to_list(
49
- list_id: @list1.id, recipient_id: recipient1.id
50
- )
51
45
  recipient2 = {}
52
46
  recipient2['email'] = @email2
53
47
  recipient2['last_name'] = @last_name2
54
48
  recipient2[@custom_field_name] = @pet2
55
- recipient2 = @client.post_recipient(params: recipient2)
49
+ result = @client.post_recipients(params: [recipient1, recipient2])
50
+ @recipients = result.persisted_recipients
51
+ @client.post_recipient_to_list(
52
+ list_id: @list1.id, recipient_id: result.persisted_recipients[0]
53
+ )
56
54
  @client.post_recipient_to_list(
57
- list_id: @list1.id, recipient_id: recipient2.id
55
+ list_id: @list1.id, recipient_id: result.persisted_recipients[1]
58
56
  )
59
57
  # # Add multiple recipients to a single list
60
58
  # @client.post_recipients_to_list(@list1.id, @recipients)
@@ -145,7 +143,7 @@ describe SendGrid4r::REST::Contacts::Lists do
145
143
  it '#get_recipients_from_list with offset & limit' do
146
144
  begin
147
145
  recipients = @client.get_recipients_from_list(
148
- list_id: @list1.id, limit: 10, offset: 0
146
+ list_id: @list1.id, page: 1, page_size: 10
149
147
  )
150
148
  recipients.recipients.each do |recipient|
151
149
  expect(
@@ -161,7 +159,7 @@ describe SendGrid4r::REST::Contacts::Lists do
161
159
  it '#delete_recipient_from_list' do
162
160
  begin
163
161
  @client.delete_recipient_from_list(
164
- list_id: @list1.id, recipient_id: @email1
162
+ list_id: @list1.id, recipient_id: @recipients[0]
165
163
  )
166
164
  rescue RestClient::ExceptionWithResponse => e
167
165
  puts e.inspect
@@ -208,9 +206,9 @@ describe SendGrid4r::REST::Contacts::Lists do
208
206
  recipient1['email'] = @email1
209
207
  recipient1['last_name'] = @last_name1
210
208
  recipient1[@custom_field_name] = @pet1
211
- recipient1 = @client.post_recipient(params: recipient1)
209
+ result = @client.post_recipients(params: [recipient1])
212
210
  @client.post_recipient_to_list(
213
- list_id: @list1.id, recipient_id: recipient1.id
211
+ list_id: @list1.id, recipient_id: result.persisted_recipients[0]
214
212
  )
215
213
  rescue RestClient::ExceptionWithResponse => e
216
214
  puts e.inspect