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,246 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe SendGrid4r::REST::Stats do
5
+ describe 'unit test' do
6
+ it 'creates top_stats instance' do
7
+ json =
8
+ '['\
9
+ '{'\
10
+ '"date": "2015-01-01",'\
11
+ '"stats": ['\
12
+ '{'\
13
+ '"metrics": {'\
14
+ '"blocks": 0,'\
15
+ '"bounce_drops": 0,'\
16
+ '"bounces": 0,'\
17
+ '"clicks": 0,'\
18
+ '"deferred": 0,'\
19
+ '"delivered": 0,'\
20
+ '"invalid_emails": 0,'\
21
+ '"opens": 0,'\
22
+ '"processed": 0,'\
23
+ '"requests": 0,'\
24
+ '"spam_report_drops": 0,'\
25
+ '"spam_reports": 0,'\
26
+ '"unique_clicks": 0,'\
27
+ '"unique_opens": 0,'\
28
+ '"unsubscribe_drops": 0,'\
29
+ '"unsubscribes": 0'\
30
+ '},'\
31
+ '"name": "cat1",'\
32
+ '"type": "category"'\
33
+ '},'\
34
+ '{'\
35
+ '"metrics": {'\
36
+ '"blocks": 0,'\
37
+ '"bounce_drops": 0,'\
38
+ '"bounces": 0,'\
39
+ '"clicks": 0,'\
40
+ '"deferred": 0,'\
41
+ '"delivered": 0,'\
42
+ '"invalid_emails": 0,'\
43
+ '"opens": 0,'\
44
+ '"processed": 0,'\
45
+ '"requests": 0,'\
46
+ '"spam_report_drops": 0,'\
47
+ '"spam_reports": 0,'\
48
+ '"unique_clicks": 0,'\
49
+ '"unique_opens": 0,'\
50
+ '"unsubscribe_drops": 0,'\
51
+ '"unsubscribes": 0'\
52
+ '},'\
53
+ '"name": "cat2",'\
54
+ '"type": "category"'\
55
+ '}'\
56
+ ']'\
57
+ '},'\
58
+ '{'\
59
+ '"date": "2015-01-02",'\
60
+ '"stats": ['\
61
+ '{'\
62
+ '"metrics": {'\
63
+ '"blocks": 10,'\
64
+ '"bounce_drops": 0,'\
65
+ '"bounces": 0,'\
66
+ '"clicks": 0,'\
67
+ '"deferred": 0,'\
68
+ '"delivered": 0,'\
69
+ '"invalid_emails": 0,'\
70
+ '"opens": 0,'\
71
+ '"processed": 0,'\
72
+ '"requests": 10,'\
73
+ '"spam_report_drops": 0,'\
74
+ '"spam_reports": 0,'\
75
+ '"unique_clicks": 0,'\
76
+ '"unique_opens": 0,'\
77
+ '"unsubscribe_drops": 0,'\
78
+ '"unsubscribes": 0'\
79
+ '},'\
80
+ '"name": "cat1",'\
81
+ '"type": "category"'\
82
+ '},'\
83
+ '{'\
84
+ '"metrics": {'\
85
+ '"blocks": 0,'\
86
+ '"bounce_drops": 0,'\
87
+ '"bounces": 0,'\
88
+ '"clicks": 6,'\
89
+ '"deferred": 0,'\
90
+ '"delivered": 5,'\
91
+ '"invalid_emails": 0,'\
92
+ '"opens": 6,'\
93
+ '"processed": 0,'\
94
+ '"requests": 5,'\
95
+ '"spam_report_drops": 0,'\
96
+ '"spam_reports": 0,'\
97
+ '"unique_clicks": 5,'\
98
+ '"unique_opens": 5,'\
99
+ '"unsubscribe_drops": 0,'\
100
+ '"unsubscribes": 6'\
101
+ '},'\
102
+ '"name": "cat2",'\
103
+ '"type": "category"'\
104
+ '}'\
105
+ ']'\
106
+ '}'\
107
+ ']'
108
+ hash = JSON.parse(json)
109
+ actual = SendGrid4r::REST::Stats.create_top_stats(hash)
110
+ expect(actual).to be_a(Array)
111
+ actual.each do |top_stat|
112
+ expect(top_stat).to be_a(SendGrid4r::REST::Stats::TopStat)
113
+ top_stat.stats.each do |stat|
114
+ expect(stat).to be_a(SendGrid4r::REST::Stats::Stat)
115
+ expect(stat.metrics).to be_a(SendGrid4r::REST::Stats::Metric)
116
+ end
117
+ end
118
+ end
119
+
120
+ it 'creates top_stat instance' do
121
+ json =
122
+ '{'\
123
+ '"date": "2015-01-01",'\
124
+ '"stats": ['\
125
+ '{'\
126
+ '"metrics": {'\
127
+ '"blocks": 0,'\
128
+ '"bounce_drops": 0,'\
129
+ '"bounces": 0,'\
130
+ '"clicks": 20,'\
131
+ '"deferred": 0,'\
132
+ '"delivered": 20,'\
133
+ '"invalid_emails": 0,'\
134
+ '"opens": 20,'\
135
+ '"processed": 0,'\
136
+ '"requests": 20,'\
137
+ '"spam_report_drops": 0,'\
138
+ '"spam_reports": 0,'\
139
+ '"unique_clicks": 20,'\
140
+ '"unique_opens": 20,'\
141
+ '"unsubscribe_drops": 0,'\
142
+ '"unsubscribes": 20'\
143
+ '},'\
144
+ '"name": "cat1",'\
145
+ '"type": "category"'\
146
+ '},'\
147
+ '{'\
148
+ '"metrics": {'\
149
+ '"blocks": 1,'\
150
+ '"bounce_drops": 0,'\
151
+ '"bounces": 0,'\
152
+ '"clicks": 19,'\
153
+ '"deferred": 0,'\
154
+ '"delivered": 19,'\
155
+ '"invalid_emails": 0,'\
156
+ '"opens": 19,'\
157
+ '"processed": 0,'\
158
+ '"requests": 20,'\
159
+ '"spam_report_drops": 0,'\
160
+ '"spam_reports": 0,'\
161
+ '"unique_clicks": 19,'\
162
+ '"unique_opens": 19,'\
163
+ '"unsubscribe_drops": 0,'\
164
+ '"unsubscribes": 19'\
165
+ '},'\
166
+ '"name": "cat2",'\
167
+ '"type": "category"'\
168
+ '},'\
169
+ '{'\
170
+ '"metrics": {'\
171
+ '"blocks": 0,'\
172
+ '"bounce_drops": 0,'\
173
+ '"bounces": 0,'\
174
+ '"deferred": 0,'\
175
+ '"clicks": 5,'\
176
+ '"delivered": 5,'\
177
+ '"invalid_emails": 0,'\
178
+ '"opens": 5,'\
179
+ '"processed": 0,'\
180
+ '"requests": 5,'\
181
+ '"spam_report_drops": 0,'\
182
+ '"spam_reports": 0,'\
183
+ '"unique_clicks": 5,'\
184
+ '"unique_opens": 5,'\
185
+ '"unsubscribe_drops": 0,'\
186
+ '"unsubscribes": 5'\
187
+ '},'\
188
+ '"name": "cat3",'\
189
+ '"type": "category"'\
190
+ '},'\
191
+ '{'\
192
+ '"metrics": {'\
193
+ '"blocks": 0,'\
194
+ '"bounce_drops": 0,'\
195
+ '"bounces": 0,'\
196
+ '"clicks": 6,'\
197
+ '"deferred": 0,'\
198
+ '"delivered": 5,'\
199
+ '"invalid_emails": 0,'\
200
+ '"opens": 6,'\
201
+ '"processed": 0,'\
202
+ '"requests": 5,'\
203
+ '"spam_report_drops": 0,'\
204
+ '"spam_reports": 0,'\
205
+ '"unique_clicks": 5,'\
206
+ '"unique_opens": 5,'\
207
+ '"unsubscribe_drops": 0,'\
208
+ '"unsubscribes": 6'\
209
+ '},'\
210
+ '"name": "cat4",'\
211
+ '"type": "category"'\
212
+ '},'\
213
+ '{'\
214
+ '"metrics": {'\
215
+ '"blocks": 10,'\
216
+ '"bounce_drops": 0,'\
217
+ '"bounces": 0,'\
218
+ '"clicks": 0,'\
219
+ '"deferred": 0,'\
220
+ '"delivered": 0,'\
221
+ '"invalid_emails": 0,'\
222
+ '"opens": 0,'\
223
+ '"processed": 0,'\
224
+ '"requests": 10,'\
225
+ '"spam_report_drops": 0,'\
226
+ '"spam_reports": 0,'\
227
+ '"unique_clicks": 0,'\
228
+ '"unique_opens": 0,'\
229
+ '"unsubscribe_drops": 0,'\
230
+ '"unsubscribes": 0'\
231
+ '},'\
232
+ '"name": "cat5",'\
233
+ '"type": "category"'\
234
+ '}'\
235
+ ']'\
236
+ '}'
237
+ hash = JSON.parse(json)
238
+ actual = SendGrid4r::REST::Stats.create_top_stat(hash)
239
+ expect(actual).to be_a(SendGrid4r::REST::Stats::TopStat)
240
+ actual.stats.each do |stat|
241
+ expect(stat).to be_a(SendGrid4r::REST::Stats::Stat)
242
+ expect(stat.metrics).to be_a(SendGrid4r::REST::Stats::Metric)
243
+ end
244
+ end
245
+ end
246
+ end
@@ -1,31 +1,29 @@
1
1
  # encoding: utf-8
2
2
  require File.dirname(__FILE__) + '/../spec_helper'
3
3
 
4
- describe 'SendGrid4r::REST::Stats::Subuser' do
5
- before :all do
6
- Dotenv.load
7
- @client = SendGrid4r::Client.new(
8
- ENV['SILVER_SENDGRID_USERNAME'], ENV['SILVER_SENDGRID_PASSWORD'])
9
- @subuser = ENV['SILVER_SUBUSER']
10
- end
4
+ describe SendGrid4r::REST::Stats::Subuser do
5
+ describe 'integration test' do
6
+ before do
7
+ Dotenv.load
8
+ @client = SendGrid4r::Client.new(
9
+ username: ENV['SILVER_SENDGRID_USERNAME'],
10
+ password: ENV['SILVER_SENDGRID_PASSWORD'])
11
+ @subuser = ENV['SILVER_SUBUSER']
12
+ end
11
13
 
12
- context 'always' do
13
- describe '#get_subusers_stats' do
14
- it 'returns subusers stats if specify mandatory params' do
14
+ context 'without block call' do
15
+ it '#get_subusers_stats with mandatory params' do
15
16
  begin
16
- actual = @client.get_subusers_stats(
17
+ top_stats = @client.get_subusers_stats(
17
18
  start_date: '2015-01-01',
18
19
  subusers: @subuser
19
20
  )
20
- expect(actual.class).to be(Array)
21
- expect(actual.length > 0).to be(true)
22
- actual.each do |global_stat|
23
- expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
24
- stats = global_stat.stats
25
- expect(stats.length).to eq(1)
26
- stats.each do |stat|
27
- expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
28
- expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
21
+ expect(top_stats).to be_a(Array)
22
+ top_stats.each do |global_stat|
23
+ expect(global_stat).to be_a(SendGrid4r::REST::Stats::TopStat)
24
+ global_stat.stats.each do |stat|
25
+ expect(stat).to be_a(SendGrid4r::REST::Stats::Stat)
26
+ expect(stat.metrics).to be_a(SendGrid4r::REST::Stats::Metric)
29
27
  expect(stat.metrics.blocks.nil?).to be(false)
30
28
  expect(stat.metrics.bounce_drops.nil?).to be(false)
31
29
  expect(stat.metrics.bounces.nil?).to be(false)
@@ -50,54 +48,101 @@ describe 'SendGrid4r::REST::Stats::Subuser' do
50
48
  end
51
49
  end
52
50
 
53
- it 'returns subusers stats if specify all params' do
54
- actual = @client.get_subusers_stats(
55
- start_date: '2015-01-01',
56
- end_date: '2015-01-02',
57
- aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK,
58
- subusers: @subuser
59
- )
60
- expect(actual.class).to be(Array)
61
- expect(actual.length > 0).to be(true)
62
- actual.each do |global_stat|
63
- expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
64
- stats = global_stat.stats
65
- expect(stats.length).to eq(1)
66
- stats.each do |stat|
67
- expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
68
- expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
51
+ it '#get_subusers_stats with all params' do
52
+ begin
53
+ top_stats = @client.get_subusers_stats(
54
+ start_date: '2015-01-01',
55
+ end_date: '2015-01-02',
56
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK,
57
+ subusers: @subuser
58
+ )
59
+ expect(top_stats.class).to be(Array)
60
+ top_stats.each do |global_stat|
61
+ expect(global_stat).to be_a(SendGrid4r::REST::Stats::TopStat)
62
+ global_stat.stats.each do |stat|
63
+ expect(stat).to be_a(SendGrid4r::REST::Stats::Stat)
64
+ expect(stat.metrics).to be_a(SendGrid4r::REST::Stats::Metric)
65
+ end
69
66
  end
67
+ rescue => e
68
+ puts e.inspect
69
+ raise e
70
+ end
71
+ end
72
+
73
+ it '#get_subusers_stats_sums with mandatory params' do
74
+ begin
75
+ top_stat = @client.get_subusers_stats_sums(start_date: '2015-01-01')
76
+ expect(top_stat).to be_a(SendGrid4r::REST::Stats::TopStat)
77
+ top_stat.stats.each do |stat|
78
+ expect(stat).to be_a(SendGrid4r::REST::Stats::Stat)
79
+ expect(stat.metrics).to be_a(SendGrid4r::REST::Stats::Metric)
80
+ end
81
+ rescue => e
82
+ puts e.inspect
83
+ raise e
84
+ end
85
+ end
86
+
87
+ it '#get_subusers_stats_sums with all params' do
88
+ begin
89
+ top_stat = @client.get_subusers_stats_sums(
90
+ start_date: '2015-01-01',
91
+ end_date: '2015-01-02',
92
+ sort_by_metric: 'opens',
93
+ sort_by_direction: 'desc',
94
+ limit: 5,
95
+ offset: 0
96
+ )
97
+ expect(top_stat).to be_a(SendGrid4r::REST::Stats::TopStat)
98
+ top_stat.stats.each do |stat|
99
+ expect(stat).to be_a(SendGrid4r::REST::Stats::Stat)
100
+ expect(stat.metrics).to be_a(SendGrid4r::REST::Stats::Metric)
101
+ end
102
+ rescue => e
103
+ puts e.inspect
104
+ raise e
70
105
  end
71
106
  end
72
107
  end
73
108
 
74
- describe '#get_subusers_stats_sums' do
75
- it 'returns subusers stats sums if specify mandatory params' do
76
- actual = @client.get_subusers_stats_sums(start_date: '2015-01-01')
77
- expect(actual.class).to be(SendGrid4r::REST::Stats::TopStat)
78
- stats = actual.stats
79
- expect(stats.length > 1).to eq(true)
80
- stats.each do |stat|
81
- expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
82
- expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
109
+ context 'with block call' do
110
+ it '#get_subusers_stats with all params' do
111
+ @client.get_subusers_stats(
112
+ start_date: '2015-01-01',
113
+ end_date: '2015-01-02',
114
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK,
115
+ subusers: @subuser
116
+ ) do |resp, req, res|
117
+ resp =
118
+ SendGrid4r::REST::Stats.create_top_stats(
119
+ JSON.parse(resp)
120
+ )
121
+ expect(resp).to be_a(Array)
122
+ resp.each do |stat|
123
+ expect(stat).to be_a(SendGrid4r::REST::Stats::TopStat)
124
+ end
125
+ expect(req).to be_a(RestClient::Request)
126
+ expect(res).to be_a(Net::HTTPOK)
83
127
  end
84
128
  end
85
129
 
86
- it 'returns subusers stats sums if specify all params' do
87
- actual = @client.get_subusers_stats_sums(
130
+ it '#get_subusers_stats_sums with all params' do
131
+ @client.get_subusers_stats_sums(
88
132
  start_date: '2015-01-01',
89
133
  end_date: '2015-01-02',
90
134
  sort_by_metric: 'opens',
91
135
  sort_by_direction: 'desc',
92
136
  limit: 5,
93
137
  offset: 0
94
- )
95
- expect(actual.class).to be(SendGrid4r::REST::Stats::TopStat)
96
- stats = actual.stats
97
- expect(stats.length).to eq(0)
98
- stats.each do |stat|
99
- expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
100
- expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
138
+ ) do |resp, req, res|
139
+ resp =
140
+ SendGrid4r::REST::Stats.create_top_stat(
141
+ JSON.parse(resp)
142
+ )
143
+ expect(resp).to be_a(SendGrid4r::REST::Stats::TopStat)
144
+ expect(req).to be_a(RestClient::Request)
145
+ expect(res).to be_a(Net::HTTPOK)
101
146
  end
102
147
  end
103
148
  end