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,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