sendgrid4r 0.2.0 → 0.3.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.
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