sendgrid4r 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.env.example +5 -0
  3. data/.rubocop.yml +8 -8
  4. data/README.md +2 -0
  5. data/lib/auth.rb +5 -2
  6. data/lib/client.rb +4 -2
  7. data/lib/sendgrid4r/factory/version_factory.rb +1 -1
  8. data/lib/sendgrid4r/rest/api.rb +4 -0
  9. data/lib/sendgrid4r/rest/api_keys/api_keys.rb +73 -0
  10. data/lib/sendgrid4r/rest/asm/asm.rb +28 -0
  11. data/lib/sendgrid4r/rest/asm/global_suppressions.rb +12 -8
  12. data/lib/sendgrid4r/rest/asm/groups.rb +29 -22
  13. data/lib/sendgrid4r/rest/asm/suppressions.rb +25 -15
  14. data/lib/sendgrid4r/rest/categories/categories.rb +19 -9
  15. data/lib/sendgrid4r/rest/contacts/custom_fields.rb +14 -8
  16. data/lib/sendgrid4r/rest/contacts/lists.rb +32 -20
  17. data/lib/sendgrid4r/rest/contacts/recipients.rb +42 -31
  18. data/lib/sendgrid4r/rest/contacts/reserved_fields.rb +6 -2
  19. data/lib/sendgrid4r/rest/contacts/segments.rb +22 -12
  20. data/lib/sendgrid4r/rest/ips/addresses.rb +36 -22
  21. data/lib/sendgrid4r/rest/ips/pools.rb +31 -16
  22. data/lib/sendgrid4r/rest/ips/warmup.rb +34 -15
  23. data/lib/sendgrid4r/rest/request.rb +33 -19
  24. data/lib/sendgrid4r/rest/settings/enforced_tls.rb +12 -5
  25. data/lib/sendgrid4r/rest/stats/advanced.rb +73 -25
  26. data/lib/sendgrid4r/rest/stats/category.rb +11 -6
  27. data/lib/sendgrid4r/rest/stats/global.rb +6 -4
  28. data/lib/sendgrid4r/rest/stats/parse.rb +10 -4
  29. data/lib/sendgrid4r/rest/stats/stats.rb +13 -18
  30. data/lib/sendgrid4r/rest/stats/subuser.rb +10 -6
  31. data/lib/sendgrid4r/rest/templates/templates.rb +23 -16
  32. data/lib/sendgrid4r/rest/templates/versions.rb +39 -36
  33. data/lib/sendgrid4r/version.rb +1 -1
  34. data/spec/api_keys/api_keys_spec.rb +152 -0
  35. data/spec/asm/asm_spec.rb +33 -0
  36. data/spec/asm/global_suppressions_spec.rb +111 -45
  37. data/spec/asm/groups_spec.rb +172 -48
  38. data/spec/asm/suppressions_spec.rb +180 -54
  39. data/spec/categories/categories_spec.rb +81 -25
  40. data/spec/client_spec.rb +11 -4
  41. data/spec/contacts/custom_fields_spec.rb +135 -44
  42. data/spec/contacts/lists_spec.rb +314 -84
  43. data/spec/contacts/recipients_spec.rb +337 -92
  44. data/spec/contacts/reserved_fields_spec.rb +80 -60
  45. data/spec/contacts/segments_spec.rb +219 -88
  46. data/spec/factory/condition_factory_spec.rb +12 -12
  47. data/spec/factory/segment_factory_spec.rb +19 -19
  48. data/spec/factory/version_factory_spec.rb +6 -6
  49. data/spec/ips/addresses_spec.rb +177 -84
  50. data/spec/ips/pools_spec.rb +190 -34
  51. data/spec/ips/warmup_spec.rb +106 -38
  52. data/spec/settings/enforced_tls_spec.rb +76 -18
  53. data/spec/stats/advanced_spec.rb +373 -196
  54. data/spec/stats/category_spec.rb +133 -71
  55. data/spec/stats/global_spec.rb +74 -47
  56. data/spec/stats/parse_spec.rb +46 -29
  57. data/spec/stats/stats_spec.rb +246 -0
  58. data/spec/stats/subuser_spec.rb +99 -54
  59. data/spec/templates/templates_spec.rb +219 -54
  60. data/spec/templates/versions_spec.rb +171 -67
  61. metadata +10 -2
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe SendGrid4r::REST::Asm do
5
+ describe 'unit test' do
6
+ it 'creates recipient_emails instance' do
7
+ json =
8
+ '{'\
9
+ '"recipient_emails": ['\
10
+ '"test1@example.com",'\
11
+ '"test2@example.com"'\
12
+ ']'\
13
+ '}'
14
+ hash = JSON.parse(json)
15
+ actual = SendGrid4r::REST::Asm.create_recipient_emails(hash)
16
+ expect(actual).to be_a(SendGrid4r::REST::Asm::RecipientEmails)
17
+ expect(actual.recipient_emails).to be_a(Array)
18
+ expect(actual.recipient_emails).to include('test1@example.com')
19
+ expect(actual.recipient_emails).to include('test2@example.com')
20
+ end
21
+
22
+ it 'creates recipient_email instance' do
23
+ json =
24
+ '{'\
25
+ '"recipient_email": "test1@example.com"'\
26
+ '}'
27
+ hash = JSON.parse(json)
28
+ actual = SendGrid4r::REST::Asm.create_recipient_email(hash)
29
+ expect(actual).to be_a(SendGrid4r::REST::Asm::RecipientEmail)
30
+ expect(actual.recipient_email).to eq('test1@example.com')
31
+ end
32
+ end
33
+ end
@@ -1,52 +1,118 @@
1
1
  # encoding: utf-8
2
2
  require File.dirname(__FILE__) + '/../spec_helper'
3
3
 
4
- describe 'SendGrid4r::REST::Asm::GlobalSuppressions' do
5
- before :all do
6
- Dotenv.load
7
- @client = SendGrid4r::Client.new(
8
- ENV['SENDGRID_USERNAME'], ENV['SENDGRID_PASSWORD'])
9
- @email1 = 'test1@test.com'
10
- @email2 = 'test2@test.com'
11
- @email3 = 'test3@test.com'
12
- end
4
+ describe SendGrid4r::REST::Asm::GlobalSuppressions do
5
+ describe 'integration test' do
6
+ before do
7
+ begin
8
+ Dotenv.load
9
+ @client = SendGrid4r::Client.new(
10
+ username: ENV['SENDGRID_USERNAME'],
11
+ password: ENV['SENDGRID_PASSWORD'])
12
+ @email1 = 'test1@test.com'
13
+ @email2 = 'test2@test.com'
14
+ @email3 = 'test3@test.com'
15
+
16
+ actual_email1 = @client.get_global_suppressed_email(@email1)
17
+ actual_email2 = @client.get_global_suppressed_email(@email2)
18
+ actual_email3 = @client.get_global_suppressed_email(@email3)
19
+ @client.delete_global_suppressed_email(
20
+ @email1
21
+ ) if actual_email1 == @email1
22
+ @client.delete_global_suppressed_email(
23
+ @email2
24
+ ) if actual_email2 == @email2
25
+ @client.delete_global_suppressed_email(
26
+ @email3
27
+ ) if actual_email3 == @email3
28
+ rescue => e
29
+ puts e.inspect
30
+ raise e
31
+ end
32
+ end
33
+
34
+ context 'without block call' do
35
+ it '#post_global_suppressed_emails' do
36
+ begin
37
+ emails = @client.post_global_suppressed_emails(
38
+ [@email1, @email2, @email3]
39
+ )
40
+ expect(emails.recipient_emails.length).to eq(3)
41
+ expect(emails.recipient_emails.include? @email1).to eq(true)
42
+ expect(emails.recipient_emails.include? @email2).to eq(true)
43
+ expect(emails.recipient_emails.include? @email3).to eq(true)
44
+ rescue => e
45
+ puts e.inspect
46
+ raise e
47
+ end
48
+ end
49
+
50
+ it '#get_global_suppressed_email' do
51
+ begin
52
+ actual_email1 = @client.get_global_suppressed_email(@email1)
53
+ actual_email2 = @client.get_global_suppressed_email(@email2)
54
+ actual_email3 = @client.get_global_suppressed_email(@email3)
55
+ actual_notexist = @client.get_global_suppressed_email('notexist')
56
+ expect(actual_email1.recipient_email).to eq(@email1)
57
+ expect(actual_email2.recipient_email).to eq(@email2)
58
+ expect(actual_email3.recipient_email).to eq(@email3)
59
+ expect(actual_notexist.recipient_email).to eq(nil)
60
+ rescue => e
61
+ puts e.inspect
62
+ raise e
63
+ end
64
+ end
65
+
66
+ it '#delete_global_suppressed_email' do
67
+ begin
68
+ expect(@client.delete_global_suppressed_email(@email1)).to eq('')
69
+ expect(@client.delete_global_suppressed_email(@email2)).to eq('')
70
+ expect(@client.delete_global_suppressed_email(@email3)).to eq('')
71
+ rescue => e
72
+ puts e.inspect
73
+ raise e
74
+ end
75
+ end
76
+ end
77
+
78
+ context 'with block call' do
79
+ it '#post_global_suppressed_emails' do
80
+ @client.post_global_suppressed_emails(
81
+ [@email1, @email2, @email3]
82
+ ) do |resp, req, res|
83
+ resp =
84
+ SendGrid4r::REST::Asm.create_recipient_emails(
85
+ JSON.parse(resp)
86
+ )
87
+ expect(resp).to be_a(
88
+ SendGrid4r::REST::Asm::RecipientEmails
89
+ )
90
+ expect(req).to be_a(RestClient::Request)
91
+ expect(res).to be_a(Net::HTTPCreated)
92
+ end
93
+ end
94
+
95
+ it '#get_global_suppressed_email' do
96
+ @client.get_global_suppressed_email(@email1) do |resp, req, res|
97
+ resp =
98
+ SendGrid4r::REST::Asm.create_recipient_email(
99
+ JSON.parse(resp)
100
+ )
101
+ expect(resp).to be_a(
102
+ SendGrid4r::REST::Asm::RecipientEmail
103
+ )
104
+ expect(req).to be_a(RestClient::Request)
105
+ expect(res).to be_a(Net::HTTPOK)
106
+ end
107
+ end
13
108
 
14
- context 'always' do
15
- it 'is normal' do
16
- # celan up test env
17
- actual_email1 = @client.get_global_suppressed_email(@email1)
18
- actual_email2 = @client.get_global_suppressed_email(@email2)
19
- actual_email3 = @client.get_global_suppressed_email(@email3)
20
- @client.delete_global_suppressed_email(
21
- @email1
22
- ) if actual_email1 == @email1
23
- @client.delete_global_suppressed_email(
24
- @email2
25
- ) if actual_email2 == @email2
26
- @client.delete_global_suppressed_email(
27
- @email3
28
- ) if actual_email3 == @email3
29
- # post_global_suppressed_emails
30
- suppressed_emails = @client.post_global_suppressed_emails(
31
- [@email1, @email2, @email3]
32
- )
33
- expect(suppressed_emails.length).to eq(3)
34
- expect(suppressed_emails.include? @email1).to eq(true)
35
- expect(suppressed_emails.include? @email2).to eq(true)
36
- expect(suppressed_emails.include? @email3).to eq(true)
37
- # get_global_suppressed_email
38
- actual_email1 = @client.get_global_suppressed_email(@email1)
39
- actual_email2 = @client.get_global_suppressed_email(@email2)
40
- actual_email3 = @client.get_global_suppressed_email(@email3)
41
- actual_notexist = @client.get_global_suppressed_email('notexist')
42
- expect(actual_email1).to eq(@email1)
43
- expect(actual_email2).to eq(@email2)
44
- expect(actual_email3).to eq(@email3)
45
- expect(actual_notexist).to eq(nil)
46
- # delete_global_suppressed_email
47
- expect(@client.delete_global_suppressed_email(@email1)).to eq('')
48
- expect(@client.delete_global_suppressed_email(@email2)).to eq('')
49
- expect(@client.delete_global_suppressed_email(@email3)).to eq('')
109
+ it '#delete_global_suppressed_email' do
110
+ @client.delete_global_suppressed_email(@email1) do |resp, req, res|
111
+ expect(resp).to eq('')
112
+ expect(req).to be_a(RestClient::Request)
113
+ expect(res).to be_a(Net::HTTPNoContent)
114
+ end
115
+ end
50
116
  end
51
117
  end
52
118
  end
@@ -1,58 +1,182 @@
1
1
  # encoding: utf-8
2
2
  require File.dirname(__FILE__) + '/../spec_helper'
3
3
 
4
- describe 'SendGrid4r::REST::Asm::Groups' do
5
- before :all do
6
- Dotenv.load
7
- @client = SendGrid4r::Client.new(
8
- ENV['SENDGRID_USERNAME'], ENV['SENDGRID_PASSWORD'])
9
- @group_name = 'group_test'
10
- @group_edit = 'group_edit'
11
- @group_desc = 'group_desc'
12
- @group_desc_edit = 'group_desc_edit'
13
- end
4
+ describe SendGrid4r::REST::Asm::Groups do
5
+ describe 'integration test' do
6
+ before do
7
+ begin
8
+ Dotenv.load
9
+ @client = SendGrid4r::Client.new(
10
+ username: ENV['SENDGRID_USERNAME'],
11
+ password: ENV['SENDGRID_PASSWORD'])
12
+ @group_name1 = 'group_test1'
13
+ @group_name2 = 'group_test2'
14
+ @group_name_edit1 = 'group_edit1'
15
+ @group_desc = 'group_desc'
16
+ @group_desc_edit = 'group_desc_edit'
17
+
18
+ # celan up test env
19
+ grps = @client.get_groups
20
+ grps.each do |grp|
21
+ @client.delete_group(grp.id) if grp.name == @group_name1
22
+ @client.delete_group(grp.id) if grp.name == @group_name_edit1
23
+ @client.delete_group(grp.id) if grp.name == @group_name2
24
+ end
25
+ # post a group
26
+ @group1 = @client.post_group(@group_name1, @group_desc)
27
+ rescue => e
28
+ puts e.inspect
29
+ raise e
30
+ end
31
+ end
32
+
33
+ context 'without block call' do
34
+ it '#post_group' do
35
+ begin
36
+ group2 = @client.post_group(@group_name2, @group_desc)
37
+ expect(@group_name2).to eq(group2.name)
38
+ expect(@group_desc).to eq(group2.description)
39
+ rescue => e
40
+ puts e.inspect
41
+ raise e
42
+ end
43
+ end
44
+
45
+ it '#patch_group' do
46
+ begin
47
+ @group1.name = @group_name_edit1
48
+ @group1.description = @group_desc_edit
49
+ group_edit1 = @client.patch_group(@group1.id, @group1)
50
+ expect(group_edit1.id).to be_a(Fixnum)
51
+ expect(group_edit1.name).to eq(@group_name_edit1)
52
+ expect(group_edit1.description).to eq(@group_desc_edit)
53
+ expect(group_edit1.last_email_sent_at).to eq(nil)
54
+ expect(group_edit1.unsubscribes).to eq(nil)
55
+ rescue => e
56
+ puts e.inspect
57
+ raise e
58
+ end
59
+ end
60
+
61
+ it '#get_groups' do
62
+ begin
63
+ groups = @client.get_groups
64
+ expect(groups).to be_a(Array)
65
+ groups.each do |group|
66
+ expect(group).to be_a(SendGrid4r::REST::Asm::Groups::Group)
67
+ end
68
+ rescue => e
69
+ puts e.inspect
70
+ raise e
71
+ end
72
+ end
14
73
 
15
- context 'always' do
16
- it 'is normal' do
17
- # celan up test env
18
- grps = @client.get_groups
19
- expect(grps.length >= 0).to eq(true)
20
- grps.each do |grp|
21
- if grp.name == @group_name || grp.name == @group_edit
22
- @client.delete_group(grp.id)
23
- end
24
- end
25
- # post a group
26
- new_group = @client.post_group(@group_name, @group_desc)
27
- expect(@group_name).to eq(new_group.name)
28
- expect(@group_desc).to eq(new_group.description)
29
- # patch the group
30
- new_group.name = @group_edit
31
- new_group.description = @group_desc_edit
32
- @client.patch_group(new_group.id, new_group)
33
- # get the group
34
- edit_group = @client.get_group(new_group.id)
35
- expect(edit_group.respond_to?('id')).to eq(true)
36
- expect(edit_group.respond_to?('name')).to eq(true)
37
- expect(edit_group.respond_to?('description')).to eq(true)
38
- expect(edit_group.respond_to?('last_email_sent_at')).to eq(true)
39
- expect(edit_group.respond_to?('unsubscribes')).to eq(true)
40
- expect(new_group.id).to eq(edit_group.id)
41
- expect(@group_edit).to eq(edit_group.name)
42
- expect(@group_desc_edit).to eq(edit_group.description)
43
- # delete the group
44
- @client.delete_group(edit_group.id)
45
- expect do
46
- @client.get_group(edit_group.id)
47
- end.to raise_error(RestClient::ResourceNotFound)
74
+ it '#get_group' do
75
+ begin
76
+ group = @client.get_group(@group1.id)
77
+ expect(group.id).to be_a(Fixnum)
78
+ expect(group.name).to eq(@group_name1)
79
+ expect(group.description).to eq(@group_desc)
80
+ expect(group.last_email_sent_at).to eq(nil)
81
+ expect(group.unsubscribes).to eq(0)
82
+ rescue => e
83
+ puts e.inspect
84
+ raise e
85
+ end
86
+ end
87
+
88
+ it '#delete_group' do
89
+ begin
90
+ @client.delete_group(@group1.id)
91
+ rescue => e
92
+ puts e.inspect
93
+ raise e
94
+ end
95
+ end
96
+ end
97
+
98
+ context 'with block call' do
99
+ it '#post_group' do
100
+ @client.post_group(@group_name2, @group_desc) do |resp, req, res|
101
+ resp =
102
+ SendGrid4r::REST::Asm::Groups.create_group(
103
+ JSON.parse(resp)
104
+ )
105
+ expect(resp).to be_a(SendGrid4r::REST::Asm::Groups::Group)
106
+ expect(req).to be_a(RestClient::Request)
107
+ expect(res).to be_a(Net::HTTPCreated)
108
+ end
109
+ end
110
+
111
+ it '#patch_group' do
112
+ @client.patch_group(@group1.id, @group1) do |resp, req, res|
113
+ resp =
114
+ SendGrid4r::REST::Asm::Groups.create_group(
115
+ JSON.parse(resp)
116
+ )
117
+ expect(resp).to be_a(SendGrid4r::REST::Asm::Groups::Group)
118
+ expect(req).to be_a(RestClient::Request)
119
+ expect(res).to be_a(Net::HTTPOK)
120
+ end
121
+ end
122
+
123
+ it '#get_groups' do
124
+ @client.get_groups do |resp, req, res|
125
+ resp =
126
+ SendGrid4r::REST::Asm::Groups.create_groups(
127
+ JSON.parse(resp)
128
+ )
129
+ expect(resp).to be_a(Array)
130
+ resp.each do |group|
131
+ expect(group).to be_a(SendGrid4r::REST::Asm::Groups::Group)
132
+ end
133
+ expect(req).to be_a(RestClient::Request)
134
+ expect(res).to be_a(Net::HTTPOK)
135
+ end
136
+ end
137
+
138
+ it '#get_group' do
139
+ @client.get_group(@group1.id) do |resp, req, res|
140
+ resp =
141
+ SendGrid4r::REST::Asm::Groups.create_group(
142
+ JSON.parse(resp)
143
+ )
144
+ expect(resp).to be_a(SendGrid4r::REST::Asm::Groups::Group)
145
+ expect(req).to be_a(RestClient::Request)
146
+ expect(res).to be_a(Net::HTTPOK)
147
+ end
148
+ end
149
+
150
+ it '#delete_group' do
151
+ @client.delete_group(@group1.id) do |resp, req, res|
152
+ expect(resp).to eq('')
153
+ expect(req).to be_a(RestClient::Request)
154
+ expect(res).to be_a(Net::HTTPNoContent)
155
+ end
156
+ end
48
157
  end
49
158
  end
50
159
 
51
- context 'abnormal' do
52
- it 'raise resource not found for none existance id' do
53
- expect do
54
- @client.get_group('notexistid')
55
- end.to raise_error(RestClient::ResourceNotFound)
160
+ describe 'unit test' do
161
+ it 'creates group instance' do
162
+ json =
163
+ '{'\
164
+ '"id": 100,'\
165
+ '"name": "Newsletters",'\
166
+ '"description": "Our monthly newsletter.",'\
167
+ '"last_email_sent_at": "2014-09-04 01:34:43",'\
168
+ '"unsubscribes": 400'\
169
+ '}'
170
+ hash = JSON.parse(json)
171
+ actual = SendGrid4r::REST::Asm::Groups.create_group(hash)
172
+ expect(actual).to be_a(
173
+ SendGrid4r::REST::Asm::Groups::Group
174
+ )
175
+ expect(actual.id).to eq(100)
176
+ expect(actual.name).to eq('Newsletters')
177
+ expect(actual.description).to eq('Our monthly newsletter.')
178
+ expect(actual.last_email_sent_at).to eq('2014-09-04 01:34:43')
179
+ expect(actual.unsubscribes).to eq(400)
56
180
  end
57
181
  end
58
182
  end
@@ -1,64 +1,190 @@
1
1
  # encoding: utf-8
2
2
  require File.dirname(__FILE__) + '/../spec_helper'
3
3
 
4
- describe 'SendGrid4r::REST::Asm::Groups::Suppressions' do
5
- before :all do
6
- Dotenv.load
7
- @client = SendGrid4r::Client.new(
8
- ENV['SENDGRID_USERNAME'], ENV['SENDGRID_PASSWORD'])
9
- @email1 = 'test1@test.com'
10
- @email2 = 'test2@test.com'
11
- @email3 = 'test3@test.com'
12
- @group_name = 'suppressions_test'
13
- @group_desc = 'group_desc'
14
- end
4
+ describe SendGrid4r::REST::Asm::Suppressions do
5
+ describe 'integration test' do
6
+ before do
7
+ begin
8
+ Dotenv.load
9
+ @client = SendGrid4r::Client.new(
10
+ username: ENV['SENDGRID_USERNAME'],
11
+ password: ENV['SENDGRID_PASSWORD'])
12
+ @email1 = 'test1@test.com'
13
+ @email2 = 'test2@test.com'
14
+ @email3 = 'test3@test.com'
15
+ @group_name = 'suppressions_test'
16
+ @group_desc = 'group_desc'
17
+
18
+ # celan up test env
19
+ grps = @client.get_groups
20
+ grps.each do |grp|
21
+ next if grp.name != @group_name
22
+ emails = @client.get_suppressed_emails(grp.id)
23
+ emails.each do |email|
24
+ @client.delete_suppressed_email(grp.id, email)
25
+ end
26
+ @client.delete_group(grp.id)
27
+ end
28
+ # post a group
29
+ @group = @client.post_group(@group_name, @group_desc)
30
+ # post suppressed email
31
+ @client.post_suppressed_emails(@group.id, [@email1])
32
+ rescue => e
33
+ puts e.inspect
34
+ raise e
35
+ end
36
+ end
37
+
38
+ context 'wthout block call' do
39
+ it '#post_suppressed_emails' do
40
+ begin
41
+ emails = @client.post_suppressed_emails(
42
+ @group.id, [@email2, @email3]
43
+ )
44
+ expect(emails.recipient_emails.length).to eq(2)
45
+ expect(emails.recipient_emails[0]).to eq(@email2)
46
+ expect(emails.recipient_emails[1]).to eq(@email3)
47
+ rescue => e
48
+ puts e.inspect
49
+ raise e
50
+ end
51
+ end
52
+
53
+ it '#get_suppressed_emails' do
54
+ begin
55
+ emails = @client.get_suppressed_emails(@group.id)
56
+ expect(emails.length).to eq(1)
57
+ expect(emails[0]).to eq(@email1)
58
+ rescue => e
59
+ puts e.inspect
60
+ raise e
61
+ end
62
+ end
63
+
64
+ it '#get_suppressions' do
65
+ begin
66
+ suppressions = @client.get_suppressions(@email1)
67
+ expect(suppressions.suppressions).to be_a(Array)
68
+ suppressions.suppressions.each do |suppression|
69
+ next unless suppression.name == @group_name
70
+ expect(suppression.name).to eq(@group_name)
71
+ expect(suppression.description).to eq(@group_desc)
72
+ expect(suppression.suppressed).to eq(true)
73
+ end
74
+ rescue => e
75
+ puts e.inspect
76
+ raise e
77
+ end
78
+ end
79
+
80
+ it '#delete_suppressed_email' do
81
+ begin
82
+ @client.delete_suppressed_email(@group.id, @email1)
83
+ @client.delete_suppressed_email(@group.id, @email2)
84
+ @client.delete_suppressed_email(@group.id, @email3)
85
+ rescue => e
86
+ puts e.inspect
87
+ raise e
88
+ end
89
+ end
90
+ end
91
+
92
+ context 'wthout block call' do
93
+ it '#post_suppressed_emails' do
94
+ @client.post_suppressed_emails(
95
+ @group.id, [@email2, @email3]
96
+ ) do |resp, req, res|
97
+ resp =
98
+ SendGrid4r::REST::Asm.create_recipient_emails(
99
+ JSON.parse(resp)
100
+ )
101
+ expect(resp).to be_a(
102
+ SendGrid4r::REST::Asm::RecipientEmails
103
+ )
104
+ expect(req).to be_a(RestClient::Request)
105
+ expect(res).to be_a(Net::HTTPCreated)
106
+ end
107
+ end
108
+
109
+ it '#get_suppressed_emails' do
110
+ @client.get_suppressed_emails(@group.id) do |resp, req, res|
111
+ expect(resp).to be_a(Array)
112
+ expect(req).to be_a(RestClient::Request)
113
+ expect(res).to be_a(Net::HTTPOK)
114
+ end
115
+ end
15
116
 
16
- context 'always' do
17
- it 'is normal' do
18
- # celan up test env
19
- grps = @client.get_groups
20
- expect(grps.length >= 0).to eq(true)
21
- grps.each do |grp|
22
- next if grp.name != @group_name
23
- emails = @client.get_suppressed_emails(grp.id)
24
- emails.each do |email|
25
- @client.delete_suppressed_email(grp.id, email)
117
+ it '#get_suppressions' do
118
+ @client.get_suppressions(@email1) do |resp, req, res|
119
+ resp =
120
+ SendGrid4r::REST::Asm::Suppressions.create_suppressions(resp)
121
+ expect(resp).to be_a(
122
+ SendGrid4r::REST::Asm::Suppressions::Suppressions
123
+ )
124
+ expect(req).to be_a(RestClient::Request)
125
+ expect(res).to be_a(Net::HTTPOK)
26
126
  end
27
- @client.delete_group(grp.id)
28
127
  end
29
- # post a group
30
- new_group = @client.post_group(@group_name, @group_desc)
31
- # post recipient emails to the suppression group
32
- suppressed_emails = @client.post_suppressed_emails(
33
- new_group.id, [@email1, @email2, @email3])
34
- expect(suppressed_emails.length).to eq(3)
35
- expect(suppressed_emails[0]).to eq(@email1)
36
- expect(suppressed_emails[1]).to eq(@email2)
37
- expect(suppressed_emails[2]).to eq(@email3)
38
- # get the suppressions
39
- suppressions = @client.get_suppressions(@email1)
40
- expect(suppressions.length >= 1).to eq(true)
41
- suppressions.each do |suppression|
42
- next unless suppression.name == @group_name
43
- expect(suppression.name).to eq(@group_name)
44
- expect(suppression.description).to eq(@group_desc)
45
- expect(suppression.suppressed).to eq(true)
128
+
129
+ it '#delete_suppressed_email' do
130
+ @client.delete_suppressed_email(@group.id, @email1) do |resp, req, res|
131
+ expect(resp).to eq('')
132
+ expect(req).to be_a(RestClient::Request)
133
+ expect(res).to be_a(Net::HTTPNoContent)
134
+ end
135
+ end
136
+ end
137
+ end
138
+
139
+ describe 'unit test' do
140
+ it 'creates suppressions instance' do
141
+ json =
142
+ '{'\
143
+ '"suppressions": ['\
144
+ '{'\
145
+ '"id": 1,'\
146
+ '"name": "Weekly Newsletter",'\
147
+ '"description": "The weekly newsletter",'\
148
+ '"suppressed": false'\
149
+ '},'\
150
+ '{'\
151
+ '"id": 4,'\
152
+ '"name": "Special Offers",'\
153
+ '"description": "Special offers and coupons",'\
154
+ '"suppressed": false'\
155
+ '}'\
156
+ ']'\
157
+ '}'
158
+ hash = JSON.parse(json)
159
+ actual = SendGrid4r::REST::Asm::Suppressions.create_suppressions(hash)
160
+ expect(actual).to be_a(
161
+ SendGrid4r::REST::Asm::Suppressions::Suppressions
162
+ )
163
+ expect(actual.suppressions).to be_a(Array)
164
+ actual.suppressions.each do |suppression|
165
+ expect(suppression).to be_a(
166
+ SendGrid4r::REST::Asm::Suppressions::Suppression
167
+ )
46
168
  end
47
- # get the recipient emails
48
- actual_emails = @client.get_suppressed_emails(new_group.id)
49
- expect(actual_emails.length).to eq(suppressed_emails.length)
50
- expect(actual_emails[0]).to eq(suppressed_emails[0])
51
- expect(actual_emails[1]).to eq(suppressed_emails[1])
52
- expect(actual_emails[2]).to eq(suppressed_emails[2])
53
- # delete the suppressed email
54
- @client.delete_suppressed_email(new_group.id, @email1)
55
- @client.delete_suppressed_email(new_group.id, @email2)
56
- @client.delete_suppressed_email(new_group.id, @email3)
57
- # delete the group
58
- @client.delete_group(new_group.id)
59
- expect do
60
- @client.get_group(new_group.id)
61
- end.to raise_error(RestClient::ResourceNotFound)
169
+ end
170
+
171
+ it 'creates suppression instance' do
172
+ json =
173
+ '{'\
174
+ '"id": 4,'\
175
+ '"name": "Special Offers",'\
176
+ '"description": "Special offers and coupons",'\
177
+ '"suppressed": false'\
178
+ '}'
179
+ hash = JSON.parse(json)
180
+ actual = SendGrid4r::REST::Asm::Suppressions.create_suppression(hash)
181
+ expect(actual).to be_a(
182
+ SendGrid4r::REST::Asm::Suppressions::Suppression
183
+ )
184
+ expect(actual.id).to eq(4)
185
+ expect(actual.name).to eq('Special Offers')
186
+ expect(actual.description).to eq('Special offers and coupons')
187
+ expect(actual.suppressed).to eq(false)
62
188
  end
63
189
  end
64
190
  end