sendgrid4r 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +21 -0
  3. data/.travis.yml +2 -3
  4. data/README.md +3 -373
  5. data/Rakefile +1 -1
  6. data/lib/auth.rb +7 -9
  7. data/lib/client.rb +8 -9
  8. data/lib/sendgrid4r/factory/version_factory.rb +20 -10
  9. data/lib/sendgrid4r/rest/api.rb +28 -9
  10. data/lib/sendgrid4r/rest/asm/global_suppressions.rb +46 -0
  11. data/lib/sendgrid4r/rest/asm/groups.rb +69 -0
  12. data/lib/sendgrid4r/rest/asm/suppressions.rb +68 -0
  13. data/lib/sendgrid4r/rest/categories/categories.rb +38 -0
  14. data/lib/sendgrid4r/rest/ips/addresses.rb +74 -0
  15. data/lib/sendgrid4r/rest/ips/pools.rb +63 -0
  16. data/lib/sendgrid4r/rest/ips/warmup.rb +55 -0
  17. data/lib/sendgrid4r/rest/request.rb +34 -19
  18. data/lib/sendgrid4r/rest/settings/enforced_tls.rb +39 -0
  19. data/lib/sendgrid4r/rest/stats/advanced.rb +91 -0
  20. data/lib/sendgrid4r/rest/stats/category.rb +47 -0
  21. data/lib/sendgrid4r/rest/stats/global.rb +26 -0
  22. data/lib/sendgrid4r/rest/stats/parse.rb +26 -0
  23. data/lib/sendgrid4r/rest/stats/stats.rb +89 -0
  24. data/lib/sendgrid4r/rest/stats/subuser.rb +47 -0
  25. data/lib/sendgrid4r/rest/templates/templates.rb +61 -0
  26. data/lib/sendgrid4r/rest/templates/versions.rb +92 -0
  27. data/lib/sendgrid4r/version.rb +4 -1
  28. data/lib/sendgrid4r.rb +5 -2
  29. data/sendgrid4r.gemspec +13 -12
  30. data/spec/{global_suppressions_spec.rb → asm/global_suppressions_spec.rb} +25 -17
  31. data/spec/asm/groups_spec.rb +58 -0
  32. data/spec/{suppressions_spec.rb → asm/suppressions_spec.rb} +24 -22
  33. data/spec/categories/categories_spec.rb +39 -0
  34. data/spec/client_spec.rb +65 -50
  35. data/spec/ips/addresses_spec.rb +116 -0
  36. data/spec/ips/pools_spec.rb +43 -0
  37. data/spec/ips/warmup_spec.rb +52 -0
  38. data/spec/{enforced_tls_spec.rb → settings/enforced_tls_spec.rb} +12 -11
  39. data/spec/stats/advanced_spec.rb +243 -0
  40. data/spec/stats/category_spec.rb +112 -0
  41. data/spec/stats/global_spec.rb +64 -0
  42. data/spec/stats/parse_spec.rb +49 -0
  43. data/spec/stats/subuser_spec.rb +105 -0
  44. data/spec/templates/templates_spec.rb +66 -0
  45. data/spec/templates/versions_spec.rb +89 -0
  46. data/spec/version_factory_spec.rb +20 -15
  47. metadata +94 -42
  48. data/lib/sendgrid4r/rest/addresses.rb +0 -62
  49. data/lib/sendgrid4r/rest/enforced_tls.rb +0 -46
  50. data/lib/sendgrid4r/rest/global_suppressions.rb +0 -35
  51. data/lib/sendgrid4r/rest/groups.rb +0 -68
  52. data/lib/sendgrid4r/rest/pools.rb +0 -53
  53. data/lib/sendgrid4r/rest/suppressions.rb +0 -57
  54. data/lib/sendgrid4r/rest/templates.rb +0 -64
  55. data/lib/sendgrid4r/rest/versions.rb +0 -65
  56. data/lib/sendgrid4r/rest/warmup.rb +0 -53
  57. data/spec/addresses_spec.rb +0 -80
  58. data/spec/groups_spec.rb +0 -54
  59. data/spec/pools_spec.rb +0 -62
  60. data/spec/templates_spec.rb +0 -38
  61. data/spec/versions_spec.rb +0 -75
  62. data/spec/warmup_spec.rb +0 -52
data/spec/client_spec.rb CHANGED
@@ -1,84 +1,99 @@
1
1
  # encoding: utf-8
2
2
  require File.dirname(__FILE__) + '/spec_helper'
3
3
 
4
- describe "SendGrid4r::Client" do
5
-
4
+ describe 'SendGrid4r::Client' do
6
5
  before :all do
7
6
  Dotenv.load
8
7
  end
9
8
 
10
- context "always" do
11
-
9
+ context 'always' do
12
10
  before :all do
13
- @client = SendGrid4r::Client.new("username", "password")
11
+ @client = SendGrid4r::Client.new('username', 'password')
14
12
  end
15
13
 
16
- describe "#initialize" do
17
- it "create instance" do
14
+ describe '#initialize' do
15
+ it 'create instance' do
18
16
  expect(@client.class).to eq(SendGrid4r::Client)
19
17
  end
20
18
  end
21
19
 
22
- describe "methods" do
23
- it "available" do
20
+ describe 'methods' do
21
+ it 'available' do
24
22
  # Advanced Suppression Manager
25
23
  # groups
26
- expect(@client.respond_to?("get_groups")).to eq(true)
27
- expect(@client.respond_to?("get_group")).to eq(true)
28
- expect(@client.respond_to?("post_group")).to eq(true)
29
- expect(@client.respond_to?("patch_group")).to eq(true)
30
- expect(@client.respond_to?("delete_group")).to eq(true)
24
+ expect(@client.respond_to?('get_groups')).to eq(true)
25
+ expect(@client.respond_to?('get_group')).to eq(true)
26
+ expect(@client.respond_to?('post_group')).to eq(true)
27
+ expect(@client.respond_to?('patch_group')).to eq(true)
28
+ expect(@client.respond_to?('delete_group')).to eq(true)
31
29
  # suppressions
32
- expect(@client.respond_to?("post_suppressed_emails")).to eq(true)
33
- expect(@client.respond_to?("get_suppressions")).to eq(true)
34
- expect(@client.respond_to?("get_suppressed_emails")).to eq(true)
35
- expect(@client.respond_to?("delete_suppressed_email")).to eq(true)
30
+ expect(@client.respond_to?('post_suppressed_emails')).to eq(true)
31
+ expect(@client.respond_to?('get_suppressions')).to eq(true)
32
+ expect(@client.respond_to?('get_suppressed_emails')).to eq(true)
33
+ expect(@client.respond_to?('delete_suppressed_email')).to eq(true)
36
34
  # global suppressions
37
- expect(@client.respond_to?("post_global_suppressed_emails")).to eq(true)
38
- expect(@client.respond_to?("get_global_suppressed_email")).to eq(true)
39
- expect(@client.respond_to?("delete_global_suppressed_email")).to eq(true)
35
+ expect(@client.respond_to?('post_global_suppressed_emails')).to eq(true)
36
+ expect(@client.respond_to?('get_global_suppressed_email')).to eq(true)
37
+ expect(
38
+ @client.respond_to?('delete_global_suppressed_email')
39
+ ).to eq(true)
40
40
  # IP Management
41
41
  # ip addresses
42
- expect(@client.respond_to?("get_ips")).to eq(true)
43
- expect(@client.respond_to?("get_ip")).to eq(true)
44
- expect(@client.respond_to?("post_ip_to_pool")).to eq(true)
45
- expect(@client.respond_to?("delete_ip_from_pool")).to eq(true)
42
+ expect(@client.respond_to?('get_ips')).to eq(true)
43
+ expect(@client.respond_to?('get_ips_assigned')).to eq(true)
44
+ expect(@client.respond_to?('get_ip')).to eq(true)
45
+ expect(@client.respond_to?('post_ip_to_pool')).to eq(true)
46
+ expect(@client.respond_to?('delete_ip_from_pool')).to eq(true)
46
47
  # pool
47
- expect(@client.respond_to?("get_pools")).to eq(true)
48
- expect(@client.respond_to?("post_pool")).to eq(true)
49
- expect(@client.respond_to?("get_pool")).to eq(true)
50
- expect(@client.respond_to?("put_pool")).to eq(true)
51
- expect(@client.respond_to?("delete_pool")).to eq(true)
48
+ expect(@client.respond_to?('get_pools')).to eq(true)
49
+ expect(@client.respond_to?('post_pool')).to eq(true)
50
+ expect(@client.respond_to?('get_pool')).to eq(true)
51
+ expect(@client.respond_to?('put_pool')).to eq(true)
52
+ expect(@client.respond_to?('delete_pool')).to eq(true)
52
53
  # warmup
53
- expect(@client.respond_to?("get_warmup_ips")).to eq(true)
54
- expect(@client.respond_to?("get_warmup_ip")).to eq(true)
55
- expect(@client.respond_to?("post_warmup_ip")).to eq(true)
56
- expect(@client.respond_to?("delete_warmup_ip")).to eq(true)
54
+ expect(@client.respond_to?('get_warmup_ips')).to eq(true)
55
+ expect(@client.respond_to?('get_warmup_ip')).to eq(true)
56
+ expect(@client.respond_to?('post_warmup_ip')).to eq(true)
57
+ expect(@client.respond_to?('delete_warmup_ip')).to eq(true)
57
58
  # Settings
58
59
  # enforced_tls
59
- expect(@client.respond_to?("get_enforced_tls")).to eq(true)
60
- expect(@client.respond_to?("patch_enforced_tls")).to eq(true)
60
+ expect(@client.respond_to?('get_enforced_tls')).to eq(true)
61
+ expect(@client.respond_to?('patch_enforced_tls')).to eq(true)
61
62
  # Template Engine
62
63
  # templates
63
- expect(@client.respond_to?("get_templates")).to eq(true)
64
- expect(@client.respond_to?("get_template")).to eq(true)
65
- expect(@client.respond_to?("post_template")).to eq(true)
66
- expect(@client.respond_to?("patch_template")).to eq(true)
67
- expect(@client.respond_to?("delete_template")).to eq(true)
64
+ expect(@client.respond_to?('get_templates')).to eq(true)
65
+ expect(@client.respond_to?('get_template')).to eq(true)
66
+ expect(@client.respond_to?('post_template')).to eq(true)
67
+ expect(@client.respond_to?('patch_template')).to eq(true)
68
+ expect(@client.respond_to?('delete_template')).to eq(true)
68
69
  # versions
69
- expect(@client.respond_to?("get_version")).to eq(true)
70
- expect(@client.respond_to?("post_version")).to eq(true)
71
- expect(@client.respond_to?("activate_version")).to eq(true)
72
- expect(@client.respond_to?("patch_version")).to eq(true)
73
- expect(@client.respond_to?("delete_version")).to eq(true)
70
+ expect(@client.respond_to?('get_version')).to eq(true)
71
+ expect(@client.respond_to?('post_version')).to eq(true)
72
+ expect(@client.respond_to?('activate_version')).to eq(true)
73
+ expect(@client.respond_to?('patch_version')).to eq(true)
74
+ expect(@client.respond_to?('delete_version')).to eq(true)
75
+ # Categories
76
+ expect(@client.respond_to?('get_categories')).to eq(true)
77
+ # Stats
78
+ expect(@client.respond_to?('get_global_stats')).to eq(true)
79
+ expect(@client.respond_to?('get_categories_stats')).to eq(true)
80
+ expect(@client.respond_to?('get_categories_stats_sums')).to eq(true)
81
+ expect(@client.respond_to?('get_subusers_stats')).to eq(true)
82
+ expect(@client.respond_to?('get_subusers_stats_sums')).to eq(true)
83
+ expect(@client.respond_to?('get_geo_stats')).to eq(true)
84
+ expect(@client.respond_to?('get_devices_stats')).to eq(true)
85
+ expect(@client.respond_to?('get_clients_stats')).to eq(true)
86
+ expect(@client.respond_to?('get_clients_type_stats')).to eq(true)
87
+ expect(@client.respond_to?('get_esp_stats')).to eq(true)
88
+ expect(@client.respond_to?('get_browsers_stats')).to eq(true)
89
+ expect(@client.respond_to?('get_parse_stats')).to eq(true)
74
90
  end
75
91
  end
76
92
 
77
- describe "VERSION" do
78
- it "returns VERSION value" do
79
- expect(SendGrid4r::VERSION).to eq("0.0.5")
93
+ describe 'VERSION' do
94
+ it 'returns VERSION value' do
95
+ expect(SendGrid4r::VERSION).to eq('0.1.0')
80
96
  end
81
97
  end
82
-
83
98
  end
84
99
  end
@@ -0,0 +1,116 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe 'SendGrid4r::REST::Ips::Addresses' do
5
+ before :all do
6
+ Dotenv.load
7
+ end
8
+
9
+ context 'if account is free' do
10
+ before :all do
11
+ @client = SendGrid4r::Client.new(
12
+ ENV['SENDGRID_USERNAME'], ENV['SENDGRID_PASSWORD'])
13
+ end
14
+
15
+ describe '#get_ips_assigned' do
16
+ it 'raise error' do
17
+ expect do
18
+ @client.get_ips_assigned
19
+ end.to raise_error(RestClient::Forbidden)
20
+ end
21
+ end
22
+
23
+ describe '#get_ip' do
24
+ it 'raise error' do
25
+ begin
26
+ expect do
27
+ @client.get_ip('10.10.10.10').to raise_error(RestClient::Forbidden)
28
+ end
29
+ rescue => e
30
+ puts e.inspect
31
+ raise e
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ context 'if account is silver' do
38
+ TEST_POOL = 'test_pool'
39
+ before :all do
40
+ begin
41
+ @client = SendGrid4r::Client.new(
42
+ ENV['SILVER_SENDGRID_USERNAME'], ENV['SILVER_SENDGRID_PASSWORD'])
43
+ # refresh the pool
44
+ pools = @client.get_pools
45
+ pools.each do |pool|
46
+ @client.delete_pool(TEST_POOL) if pool.name == TEST_POOL
47
+ end
48
+ @client.post_pool(TEST_POOL)
49
+ # ips = @client.get_ips
50
+ # @client.delete_ip_from_pool(TEST_POOL, ips[0].ip)
51
+ rescue => e
52
+ puts e.inspect
53
+ raise e
54
+ end
55
+ end
56
+
57
+ describe '#get_ips' do
58
+ it 'returns Array of Address instance' do
59
+ ips = @client.get_ips
60
+ expect(ips.length > 0).to be(true)
61
+ ip = ips[0]
62
+ expect(ip.class).to be(SendGrid4r::REST::Ips::Addresses::Address)
63
+ expect(ip.ip.nil?).to be(false)
64
+ # expect(ip.pools.nil?).to be(false)
65
+ # expect(ip.start_date.nil?).to be(false)
66
+ expect(ip.warmup.nil?).to be(false)
67
+ end
68
+ end
69
+
70
+ describe '#get_ips_assigned' do
71
+ it 'returns Array of Address instance' do
72
+ ips = @client.get_ips_assigned
73
+ expect(ips.length > 0).to be(true)
74
+ expect(ips[0].class).to be(SendGrid4r::REST::Ips::Addresses::Address)
75
+ end
76
+ end
77
+
78
+ describe '#get_ip' do
79
+ it 'returns Address instance' do
80
+ begin
81
+ ips = @client.get_ips_assigned
82
+ expect(
83
+ @client.get_ip(ips[0].ip).class
84
+ ).to be(SendGrid4r::REST::Ips::Addresses::Address)
85
+ rescue => e
86
+ puts e.inspect
87
+ raise e
88
+ end
89
+ end
90
+ end
91
+
92
+ describe '#post_ip_to_pool' do
93
+ it 'add ip to pool successfully' do
94
+ ips = @client.get_ips_assigned
95
+ actual = @client.post_ip_to_pool(TEST_POOL, ips[0].ip)
96
+ expect(actual.ip).to eq(ips[0].ip)
97
+ expect(actual.pools).to include(TEST_POOL)
98
+ expect(actual.pools.class).to be(Array)
99
+ end
100
+ end
101
+
102
+ # Could not test because POST an IP to a pool takes 60 sec
103
+ # describe '#delete_ip_from_pool' do
104
+ # it 'delete ip from pool successfully' do
105
+ # begin
106
+ # ips = @client.get_ips
107
+ # @client.post_ip_to_pool(TEST_POOL, ips[0].ip)
108
+ # @client.delete_ip_from_pool(TEST_POOL, ips[0].ip)
109
+ # rescue => e
110
+ # puts e.inspect
111
+ # raise e
112
+ # end
113
+ # end
114
+ # end
115
+ end
116
+ end
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe 'SendGrid4r::REST::Ips::Pools' do
5
+ before :all do
6
+ Dotenv.load
7
+ @client = SendGrid4r::Client.new(
8
+ ENV['SILVER_SENDGRID_USERNAME'], ENV['SILVER_SENDGRID_PASSWORD'])
9
+ @pool_name = 'pool_test'
10
+ @pool_edit = 'pool_edit'
11
+ end
12
+
13
+ context 'if account is silver' do
14
+ it 'is normal' do
15
+ # clean up test env
16
+ pools = @client.get_pools
17
+ expect(pools.length >= 0).to eq(true)
18
+ pools.each do |pool|
19
+ if pool.name == @pool_name || pool.name == @pool_edit
20
+ @client.delete_pool(pool.name)
21
+ end
22
+ end
23
+ # post a pool
24
+ new_pool = @client.post_pool(@pool_name)
25
+ expect(@pool_name).to eq(new_pool.name)
26
+ # put the pool
27
+ edit_pool = @client.put_pool(@pool_name, @pool_edit)
28
+ expect(@pool_edit).to eq(edit_pool.name)
29
+ # get the pool
30
+ pool = @client.get_pool(@pool_edit)
31
+ expect(SendGrid4r::REST::Ips::Pools::Pool).to be(pool.class)
32
+ # delete the pool
33
+ @client.delete_pool(pool.pool_name)
34
+ expect { @client.get_pool(pool.name) }
35
+ ips = @client.get_ips
36
+ expect(ips.length).to be(1)
37
+ expect(ips[0].class).to be(SendGrid4r::REST::Ips::Addresses::Address)
38
+ expect(
39
+ @client.get_ip(ips[0].ip).class
40
+ ).to be(SendGrid4r::REST::Ips::Addresses::Address)
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe 'SendGrid4r::REST::Ips::WarmUp' do
5
+ before :all do
6
+ Dotenv.load
7
+ end
8
+
9
+ context 'normal' do
10
+ it 'is normal' do
11
+ begin
12
+ client = SendGrid4r::Client.new(
13
+ ENV['SILVER_SENDGRID_USERNAME'], ENV['SILVER_SENDGRID_PASSWORD'])
14
+ # celan up test env
15
+ warmup_ips = client.get_warmup_ips
16
+ expect(warmup_ips.length >= 0).to eq(true)
17
+ if warmup_ips.length > 0
18
+ warmup_ips.each do |warmup_ip|
19
+ client.delete_warmup_ip(warmup_ip.ip)
20
+ end
21
+ end
22
+ # get warmup ip
23
+ warmup_ips = client.get_warmup_ips
24
+ expect(warmup_ips.length).to eq(0)
25
+ # post warmup ip
26
+ ips = client.get_ips
27
+ if ips.length > 0
28
+ warmup_ip = client.post_warmup_ip(ips[0].ip)
29
+ expect(warmup_ip.ip).to eq(ips[0].ip)
30
+ end
31
+ warmup_ip = client.get_warmup_ip(warmup_ip.ip)
32
+ expect(warmup_ip.ip).to eq(ips[0].ip)
33
+ # delete the warmup ip
34
+ client.delete_warmup_ip(warmup_ip.ip)
35
+ expect do
36
+ client.get_warmup_ip(warmup_ip.ip)
37
+ end.to raise_error(RestClient::ResourceNotFound)
38
+ rescue => ex
39
+ puts ex.inspect
40
+ raise ex
41
+ end
42
+ end
43
+ end
44
+
45
+ context 'abnormal' do
46
+ it 'raise forbidden for free account' do
47
+ client = SendGrid4r::Client.new(
48
+ ENV['SENDGRID_USERNAME'], ENV['SENDGRID_PASSWORD'])
49
+ expect { client.get_warmup_ips }.to raise_error(RestClient::Forbidden)
50
+ end
51
+ end
52
+ end
@@ -1,24 +1,25 @@
1
1
  # encoding: utf-8
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- describe "SendGrid4r::REST::Settings::EnforcedTls" do
2
+ require File.dirname(__FILE__) + '/../spec_helper'
5
3
 
4
+ describe 'SendGrid4r::REST::Settings::EnforcedTls' do
6
5
  before :all do
7
6
  Dotenv.load
8
- @client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
7
+ @client = SendGrid4r::Client.new(
8
+ ENV['SENDGRID_USERNAME'], ENV['SENDGRID_PASSWORD'])
9
9
  end
10
10
 
11
- context "always" do
12
-
13
- describe "#get_enforced_tls" do
14
- it "returns EnforcedTls instance" do
11
+ context 'always' do
12
+ describe '#get_enforced_tls' do
13
+ it 'returns EnforcedTls instance' do
15
14
  actual = @client.get_enforced_tls
16
- expect(actual.class).to be(SendGrid4r::REST::Settings::EnforcedTls::EnforcedTls)
15
+ expect(
16
+ actual.class
17
+ ).to be(SendGrid4r::REST::Settings::EnforcedTls::EnforcedTls)
17
18
  end
18
19
  end
19
20
 
20
- describe "#patch_enforced_tls" do
21
- it "update EnforcedTls values" do
21
+ describe '#patch_enforced_tls' do
22
+ it 'update EnforcedTls values' do
22
23
  # get original enforced_tls settings
23
24
  actual = @client.get_enforced_tls
24
25
  # patch both value
@@ -0,0 +1,243 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe 'SendGrid4r::REST::Stats::Advanced' do
5
+ before :all do
6
+ Dotenv.load
7
+ @client = SendGrid4r::Client.new(
8
+ ENV['SENDGRID_USERNAME'], ENV['SENDGRID_PASSWORD'])
9
+ end
10
+
11
+ context 'always' do
12
+ describe '#get_geo_stats' do
13
+ it 'returns geo stats if specify mandatory params' do
14
+ actual = @client.get_geo_stats(start_date: '2015-01-01')
15
+ expect(actual.class).to be(Array)
16
+ expect(actual.length > 0).to be(true)
17
+ actual.each do |global_stat|
18
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
19
+ stats = global_stat.stats
20
+ expect(stats.length).to eq(14)
21
+ stats.each do |stat|
22
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
23
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
24
+ expect(stat.metrics.clicks.nil?).to be(false)
25
+ expect(stat.metrics.opens.nil?).to be(false)
26
+ expect(stat.metrics.unique_clicks.nil?).to be(false)
27
+ expect(stat.metrics.unique_opens.nil?).to be(false)
28
+ end
29
+ end
30
+ end
31
+ it 'returns geo stats if specify all params' do
32
+ actual = @client.get_geo_stats(
33
+ start_date: '2015-01-01',
34
+ end_date: '2015-01-02',
35
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK,
36
+ country: 'US'
37
+ )
38
+ expect(actual.class).to be(Array)
39
+ expect(actual.length > 0).to be(true)
40
+ actual.each do |global_stat|
41
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
42
+ stats = global_stat.stats
43
+ expect(stats.length).to eq(1)
44
+ stats.each do |stat|
45
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
46
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ describe '#get_devices_stats' do
52
+ it 'returns devices stats if specify mandatory params' do
53
+ actual = @client.get_devices_stats(start_date: '2015-01-01')
54
+ expect(actual.class).to be(Array)
55
+ expect(actual.length > 0).to be(true)
56
+ actual.each do |global_stat|
57
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
58
+ stats = global_stat.stats
59
+ expect(stats.length).to eq(5)
60
+ stats.each do |stat|
61
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
62
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
63
+ expect(stat.metrics.opens.nil?).to be(false)
64
+ expect(stat.metrics.unique_opens.nil?).to be(false)
65
+ end
66
+ end
67
+ end
68
+ it 'returns devices stats if specify all params' do
69
+ actual = @client.get_devices_stats(
70
+ start_date: '2015-01-01',
71
+ end_date: '2015-01-02',
72
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK
73
+ )
74
+ expect(actual.class).to be(Array)
75
+ expect(actual.length > 0).to be(true)
76
+ actual.each do |global_stat|
77
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
78
+ stats = global_stat.stats
79
+ expect(stats.length).to eq(1)
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)
83
+ end
84
+ end
85
+ end
86
+ end
87
+ describe '#get_clients_stats' do
88
+ it 'returns clients stats if specify mandatory params' do
89
+ actual = @client.get_clients_stats(start_date: '2015-01-01')
90
+ expect(actual.class).to be(Array)
91
+ expect(actual.length > 0).to be(true)
92
+ actual.each do |global_stat|
93
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
94
+ stats = global_stat.stats
95
+ expect(stats.length).to eq(17)
96
+ stats.each do |stat|
97
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
98
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
99
+ expect(stat.metrics.opens.nil?).to be(false)
100
+ expect(stat.metrics.unique_opens.nil?).to be(false)
101
+ end
102
+ end
103
+ end
104
+ it 'returns clients stats if specify all params' do
105
+ actual = @client.get_clients_stats(
106
+ start_date: '2015-01-01',
107
+ end_date: '2015-01-02',
108
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK
109
+ )
110
+ expect(actual.class).to be(Array)
111
+ expect(actual.length > 0).to be(true)
112
+ actual.each do |global_stat|
113
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
114
+ stats = global_stat.stats
115
+ expect(stats.length).to eq(1)
116
+ stats.each do |stat|
117
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
118
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
119
+ end
120
+ end
121
+ end
122
+ end
123
+ describe '#get_clients_type_stats' do
124
+ it 'returns clients type stats if specify mandatory params' do
125
+ actual = @client.get_clients_type_stats(
126
+ start_date: '2015-01-01', client_type: 'webmail'
127
+ )
128
+ expect(actual.class).to be(Array)
129
+ expect(actual.length > 0).to be(true)
130
+ actual.each do |global_stat|
131
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
132
+ stats = global_stat.stats
133
+ expect(stats.length).to eq(5)
134
+ stats.each do |stat|
135
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
136
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
137
+ expect(stat.metrics.opens.nil?).to be(false)
138
+ expect(stat.metrics.unique_opens.nil?).to be(false)
139
+ end
140
+ end
141
+ end
142
+ it 'returns clients type stats if specify all params' do
143
+ actual = @client.get_clients_type_stats(
144
+ start_date: '2015-01-01',
145
+ end_date: '2015-01-02',
146
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK,
147
+ client_type: 'webmail'
148
+ )
149
+ expect(actual.class).to be(Array)
150
+ expect(actual.length > 0).to be(true)
151
+ actual.each do |global_stat|
152
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
153
+ stats = global_stat.stats
154
+ expect(stats.length).to eq(1)
155
+ stats.each do |stat|
156
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
157
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
158
+ end
159
+ end
160
+ end
161
+ end
162
+ describe '#get_esp_stats' do
163
+ it 'returns esp stats if specify mandatory params' do
164
+ actual = @client.get_esp_stats(start_date: '2015-01-01')
165
+ expect(actual.class).to be(Array)
166
+ expect(actual.length > 0).to be(true)
167
+ actual.each do |global_stat|
168
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
169
+ stats = global_stat.stats
170
+ expect(stats.length).to eq(1)
171
+ stats.each do |stat|
172
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
173
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
174
+ expect(stat.metrics.blocks.nil?).to be(false)
175
+ expect(stat.metrics.bounces.nil?).to be(false)
176
+ expect(stat.metrics.clicks.nil?).to be(false)
177
+ expect(stat.metrics.deferred.nil?).to be(false)
178
+ expect(stat.metrics.delivered.nil?).to be(false)
179
+ expect(stat.metrics.drops.nil?).to be(false)
180
+ expect(stat.metrics.opens.nil?).to be(false)
181
+ expect(stat.metrics.spam_reports.nil?).to be(false)
182
+ expect(stat.metrics.unique_clicks.nil?).to be(false)
183
+ expect(stat.metrics.unique_opens.nil?).to be(false)
184
+ end
185
+ end
186
+ end
187
+ it 'returns esp stats if specify all params' do
188
+ actual = @client.get_esp_stats(
189
+ start_date: '2015-01-01',
190
+ end_date: '2015-01-02',
191
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK,
192
+ esps: 'sss'
193
+ )
194
+ expect(actual.class).to be(Array)
195
+ expect(actual.length > 0).to be(true)
196
+ actual.each do |global_stat|
197
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
198
+ stats = global_stat.stats
199
+ stats.each do |stat|
200
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
201
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
202
+ end
203
+ end
204
+ end
205
+ end
206
+ describe '#get_browsers_stats' do
207
+ it 'returns browsers stats if specify mandatory params' do
208
+ actual = @client.get_browsers_stats(start_date: '2015-01-01')
209
+ expect(actual.class).to be(Array)
210
+ expect(actual.length > 0).to be(true)
211
+ actual.each do |global_stat|
212
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
213
+ stats = global_stat.stats
214
+ expect(stats.length).to eq(1)
215
+ stats.each do |stat|
216
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
217
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
218
+ expect(stat.metrics.clicks.nil?).to be(false)
219
+ expect(stat.metrics.unique_clicks.nil?).to be(false)
220
+ end
221
+ end
222
+ end
223
+ it 'returns browsers stats if specify all params' do
224
+ actual = @client.get_browsers_stats(
225
+ start_date: '2015-01-01',
226
+ end_date: '2015-01-02',
227
+ aggregated_by: SendGrid4r::REST::Stats::AggregatedBy::WEEK,
228
+ browsers: 'chrome'
229
+ )
230
+ expect(actual.class).to be(Array)
231
+ expect(actual.length > 0).to be(false)
232
+ actual.each do |global_stat|
233
+ expect(global_stat.class).to be(SendGrid4r::REST::Stats::TopStat)
234
+ stats = global_stat.stats
235
+ stats.each do |stat|
236
+ expect(stat.class).to be(SendGrid4r::REST::Stats::Stat)
237
+ expect(stat.metrics.class).to be(SendGrid4r::REST::Stats::Metric)
238
+ end
239
+ end
240
+ end
241
+ end
242
+ end
243
+ end