sendgrid4r 0.0.5 → 0.1.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 (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
@@ -0,0 +1,89 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.unshift File.dirname(__FILE__)
3
+
4
+ require 'sendgrid4r/rest/request'
5
+
6
+ module SendGrid4r
7
+ module REST
8
+ #
9
+ # SendGrid Web API v3 Stats
10
+ #
11
+ module Stats
12
+ #
13
+ # SendGrid Web API v3 Stats - AggregatedBy
14
+ #
15
+ module AggregatedBy
16
+ DAY = 'day'
17
+ WEEK = 'week'
18
+ MONTH = 'month'
19
+ end
20
+
21
+ TopStat = Struct.new(:date, :stats)
22
+ Stat = Struct.new(:metrics, :name, :type)
23
+ Metric = Struct.new(
24
+ :blocks,
25
+ :bounce_drops,
26
+ :bounces,
27
+ :clicks,
28
+ :deferred,
29
+ :delivered,
30
+ :drops,
31
+ :invalid_emails,
32
+ :opens,
33
+ :processed,
34
+ :requests,
35
+ :spam_report_drops,
36
+ :spam_reports,
37
+ :unique_clicks,
38
+ :unique_opens,
39
+ :unsubscribe_drops,
40
+ :unsubscribes,
41
+ :received
42
+ )
43
+
44
+ def self.create_top_stat(resp)
45
+ stats = []
46
+ resp['stats'].each do |stat|
47
+ stats.push(SendGrid4r::REST::Stats.create_stat(stat))
48
+ end
49
+ TopStat.new(resp['date'], stats)
50
+ end
51
+
52
+ def self.create_stat(resp)
53
+ stat = SendGrid4r::REST::Stats.create_metric(resp['metrics'])
54
+ Stat.new(stat, resp['name'], resp['type'])
55
+ end
56
+
57
+ def self.create_metric(resp)
58
+ Metric.new(
59
+ resp['blocks'],
60
+ resp['bounce_drops'],
61
+ resp['bounces'],
62
+ resp['clicks'],
63
+ resp['deferred'],
64
+ resp['delivered'],
65
+ resp['drops'],
66
+ resp['invalid_emails'],
67
+ resp['opens'],
68
+ resp['processed'],
69
+ resp['requests'],
70
+ resp['spam_report_drops'],
71
+ resp['spam_reports'],
72
+ resp['unique_clicks'],
73
+ resp['unique_opens'],
74
+ resp['unsubscribe_drops'],
75
+ resp['unsubscribes'],
76
+ resp['received']
77
+ )
78
+ end
79
+
80
+ def self.create_top_stats(resp_a)
81
+ top_stats = []
82
+ resp_a.each do |resp|
83
+ top_stats.push(SendGrid4r::REST::Stats.create_top_stat(resp))
84
+ end
85
+ top_stats
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,47 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.unshift File.dirname(__FILE__)
3
+
4
+ require 'sendgrid4r/rest/request'
5
+
6
+ module SendGrid4r
7
+ module REST
8
+ module Stats
9
+ #
10
+ # SendGrid Web API v3 Stats - Subuser
11
+ #
12
+ module Subuser
13
+ def get_subusers_stats(
14
+ start_date:, end_date: nil, aggregated_by: nil, subusers:)
15
+ params = {
16
+ start_date: start_date,
17
+ end_date: end_date,
18
+ aggregated_by: aggregated_by,
19
+ subusers: subusers
20
+ }
21
+ resp_a = get(
22
+ @auth, "#{SendGrid4r::Client::BASE_URL}/subusers/stats", params)
23
+ SendGrid4r::REST::Stats.create_top_stats(resp_a)
24
+ end
25
+
26
+ def get_subusers_stats_sums(
27
+ start_date:, end_date: nil, sort_by_metric: nil,
28
+ sort_by_direction: nil, limit: nil, offset: nil)
29
+ params = {
30
+ start_date: start_date,
31
+ end_date: end_date,
32
+ sort_by_metric: sort_by_metric,
33
+ sort_by_direction: sort_by_direction,
34
+ limit: limit,
35
+ offset: offset
36
+ }
37
+ resp = get(
38
+ @auth,
39
+ "#{SendGrid4r::Client::BASE_URL}/subusers/stats/sums",
40
+ params
41
+ )
42
+ SendGrid4r::REST::Stats.create_top_stat(resp)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,61 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.unshift File.dirname(__FILE__)
3
+
4
+ require 'sendgrid4r/rest/request'
5
+ require 'versions'
6
+
7
+ module SendGrid4r
8
+ module REST
9
+ #
10
+ # SendGrid Web API v3 Template Engine - Templates
11
+ #
12
+ module Templates
13
+ include SendGrid4r::REST::Request
14
+
15
+ Template = Struct.new(:id, :name, :versions)
16
+
17
+ def self.url(temp_id = nil)
18
+ url = "#{SendGrid4r::Client::BASE_URL}/templates"
19
+ url = "#{url}/#{temp_id}" unless temp_id.nil?
20
+ url
21
+ end
22
+
23
+ def self.create_template(resp)
24
+ vers = []
25
+ resp['versions'].each do |ver|
26
+ vers.push(SendGrid4r::REST::Templates.create_version(ver))
27
+ end
28
+ Template.new(resp['id'], resp['name'], vers)
29
+ end
30
+
31
+ def post_template(name)
32
+ resp = post(@auth, SendGrid4r::REST::Templates.url, 'name' => name)
33
+ SendGrid4r::REST::Templates.create_template(resp)
34
+ end
35
+
36
+ def get_templates
37
+ resp_a = get(@auth, SendGrid4r::REST::Templates.url)
38
+ tmps = []
39
+ resp_a['templates'].each do |resp|
40
+ tmps.push(SendGrid4r::REST::Templates.create_template(resp))
41
+ end
42
+ tmps
43
+ end
44
+
45
+ def get_template(temp_id)
46
+ resp = get(@auth, SendGrid4r::REST::Templates.url(temp_id))
47
+ SendGrid4r::REST::Templates.create_template(resp)
48
+ end
49
+
50
+ def patch_template(temp_id, name)
51
+ resp = patch(
52
+ @auth, SendGrid4r::REST::Templates.url(temp_id), 'name' => name)
53
+ SendGrid4r::REST::Templates.create_template(resp)
54
+ end
55
+
56
+ def delete_template(temp_id)
57
+ delete(@auth, SendGrid4r::REST::Templates.url(temp_id))
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,92 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.unshift File.dirname(__FILE__)
3
+
4
+ require 'sendgrid4r/rest/request'
5
+
6
+ module SendGrid4r
7
+ module REST
8
+ #
9
+ # SendGrid Web API v3 Template Engine - Templates
10
+ #
11
+ module Templates
12
+ Version = Struct.new(
13
+ :id, :user_id, :template_id, :active, :name, :html_content,
14
+ :plain_content, :subject, :updated_at)
15
+
16
+ def self.create_version(resp)
17
+ Version.new(
18
+ resp['id'],
19
+ resp['user_id'],
20
+ resp['template_id'],
21
+ resp['active'],
22
+ resp['name'],
23
+ resp['html_content'],
24
+ resp['plain_content'],
25
+ resp['subject'],
26
+ resp['updated_at'])
27
+ end
28
+
29
+ #
30
+ # SendGrid Web API v3 Template Engine - Versions
31
+ #
32
+ module Versions
33
+ include SendGrid4r::REST::Request
34
+
35
+ def self.url(temp_id, ver_id = nil)
36
+ url = "#{SendGrid4r::Client::BASE_URL}/templates/#{temp_id}/versions"
37
+ url = "#{url}/#{ver_id}" unless ver_id.nil?
38
+ url
39
+ end
40
+
41
+ def post_version(temp_id, version)
42
+ resp = post(
43
+ @auth,
44
+ "#{SendGrid4r::REST::Templates::Versions.url(temp_id)}",
45
+ remove_uneditable_keys(version.to_h)
46
+ )
47
+ SendGrid4r::REST::Templates.create_version(resp)
48
+ end
49
+
50
+ def activate_version(temp_id, ver_id)
51
+ url = SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)
52
+ resp = post(
53
+ @auth,
54
+ "#{url}/activate"
55
+ )
56
+ SendGrid4r::REST::Templates.create_version(resp)
57
+ end
58
+
59
+ def get_version(temp_id, ver_id)
60
+ resp = get(
61
+ @auth,
62
+ "#{SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)}")
63
+ SendGrid4r::REST::Templates.create_version(resp)
64
+ end
65
+
66
+ def patch_version(temp_id, ver_id, version)
67
+ resp = patch(
68
+ @auth,
69
+ "#{SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)}",
70
+ remove_uneditable_keys(version.to_h)
71
+ )
72
+ SendGrid4r::REST::Templates.create_version(resp)
73
+ end
74
+
75
+ def delete_version(temp_id, ver_id)
76
+ delete(
77
+ @auth,
78
+ "#{SendGrid4r::REST::Templates::Versions.url(temp_id, ver_id)}"
79
+ )
80
+ end
81
+
82
+ private
83
+
84
+ def remove_uneditable_keys(hash_value)
85
+ hash_value.delete(:id) if hash_value.key?(:id)
86
+ hash_value.delete(:template_id) if hash_value.key?(:template_id)
87
+ hash_value
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -1,3 +1,6 @@
1
+ #
2
+ # SendGrid API v3 wrapper implementation.
3
+ #
1
4
  module SendGrid4r
2
- VERSION = "0.0.5"
5
+ VERSION = '0.1.0'
3
6
  end
data/lib/sendgrid4r.rb CHANGED
@@ -1,2 +1,5 @@
1
- require "client"
2
- require "sendgrid4r/version"
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.unshift File.dirname(__FILE__)
3
+
4
+ require 'client'
5
+ require 'sendgrid4r/version'
data/sendgrid4r.gemspec CHANGED
@@ -4,22 +4,23 @@ $LOAD_PATH.unshift(src) unless $LOAD_PATH.include?(src)
4
4
  require 'sendgrid4r/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "sendgrid4r"
7
+ spec.name = 'sendgrid4r'
8
8
  spec.version = SendGrid4r::VERSION
9
- spec.authors = ["awwa500@gmail.com"]
10
- spec.email = ["awwa500@gmail.com"]
11
- spec.summary = "SendGrid Web API v3 module"
12
- spec.description = "SendGrid Web API v3 module"
13
- spec.homepage = ""
14
- spec.license = "MIT"
9
+ spec.authors = ['awwa500@gmail.com']
10
+ spec.email = ['awwa500@gmail.com']
11
+ spec.summary = 'SendGrid Web API v3 module'
12
+ spec.description = 'SendGrid Web API v3 module'
13
+ spec.homepage = ''
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency "rest-client"
22
- spec.add_development_dependency "bundler", "~> 1.6"
23
- spec.add_development_dependency "rspec"
24
- spec.add_development_dependency "dotenv"
21
+ spec.add_dependency('rest-client', '1.7.2')
22
+ spec.add_development_dependency('rubocop', '>=0.29.0', '<0.30.0')
23
+ spec.add_development_dependency('bundler', '>=1.6.0', '<1.8.0')
24
+ spec.add_development_dependency('rspec', '3.1.0')
25
+ spec.add_development_dependency('dotenv', '>=0.11.0', '<0.12.0')
25
26
  end
@@ -1,27 +1,35 @@
1
1
  # encoding: utf-8
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- describe "SendGrid4r::REST::Asm::GlobalSuppressions" do
2
+ require File.dirname(__FILE__) + '/../spec_helper'
5
3
 
4
+ describe 'SendGrid4r::REST::Asm::GlobalSuppressions' do
6
5
  before :all do
7
6
  Dotenv.load
8
- @client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
9
- @email1 = "test1@test.com"
10
- @email2 = "test2@test.com"
11
- @email3 = "test3@test.com"
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
12
  end
13
13
 
14
- context "always" do
15
- it "is normal" do
14
+ context 'always' do
15
+ it 'is normal' do
16
16
  # celan up test env
17
17
  actual_email1 = @client.get_global_suppressed_email(@email1)
18
18
  actual_email2 = @client.get_global_suppressed_email(@email2)
19
19
  actual_email3 = @client.get_global_suppressed_email(@email3)
20
- @client.delete_global_suppressed_email(@email1) if actual_email1 == @email1
21
- @client.delete_global_suppressed_email(@email2) if actual_email2 == @email2
22
- @client.delete_global_suppressed_email(@email3) if actual_email3 == @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
23
29
  # post_global_suppressed_emails
24
- suppressed_emails = @client.post_global_suppressed_emails([@email1, @email2, @email3])
30
+ suppressed_emails = @client.post_global_suppressed_emails(
31
+ [@email1, @email2, @email3]
32
+ )
25
33
  expect(suppressed_emails.length).to eq(3)
26
34
  expect(suppressed_emails.include? @email1).to eq(true)
27
35
  expect(suppressed_emails.include? @email2).to eq(true)
@@ -30,15 +38,15 @@ describe "SendGrid4r::REST::Asm::GlobalSuppressions" do
30
38
  actual_email1 = @client.get_global_suppressed_email(@email1)
31
39
  actual_email2 = @client.get_global_suppressed_email(@email2)
32
40
  actual_email3 = @client.get_global_suppressed_email(@email3)
33
- actual_notexist = @client.get_global_suppressed_email("notexist")
41
+ actual_notexist = @client.get_global_suppressed_email('notexist')
34
42
  expect(actual_email1).to eq(@email1)
35
43
  expect(actual_email2).to eq(@email2)
36
44
  expect(actual_email3).to eq(@email3)
37
45
  expect(actual_notexist).to eq(nil)
38
46
  # delete_global_suppressed_email
39
- expect(@client.delete_global_suppressed_email(@email1)).to eq("")
40
- expect(@client.delete_global_suppressed_email(@email2)).to eq("")
41
- expect(@client.delete_global_suppressed_email(@email3)).to eq("")
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('')
42
50
  end
43
51
  end
44
52
  end
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
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
14
+
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)
48
+ end
49
+ end
50
+
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)
56
+ end
57
+ end
58
+ end
@@ -1,43 +1,43 @@
1
1
  # encoding: utf-8
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- describe "SendGrid4r::REST::Asm::Groups::Suppressions" do
2
+ require File.dirname(__FILE__) + '/../spec_helper'
5
3
 
4
+ describe 'SendGrid4r::REST::Asm::Groups::Suppressions' do
6
5
  before :all do
7
6
  Dotenv.load
8
- @client = SendGrid4r::Client.new(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"
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
14
  end
15
15
 
16
- context "always" do
17
- it "is normal" do
16
+ context 'always' do
17
+ it 'is normal' do
18
18
  # celan up test env
19
19
  grps = @client.get_groups
20
20
  expect(grps.length >= 0).to eq(true)
21
- grps.each{|grp|
22
- if grp.name == @group_name then
23
- emails = @client.get_suppressed_emails(grp.id)
24
- emails.each{|email|
25
- @client.delete_suppressed_email(grp.id, email)
26
- }
27
- @client.delete_group(grp.id)
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)
28
26
  end
29
- }
27
+ @client.delete_group(grp.id)
28
+ end
30
29
  # post a group
31
30
  new_group = @client.post_group(@group_name, @group_desc)
32
31
  # post recipient emails to the suppression group
33
- suppressed_emails = @client.post_suppressed_emails(new_group.id, [@email1, @email2, @email3])
32
+ suppressed_emails = @client.post_suppressed_emails(
33
+ new_group.id, [@email1, @email2, @email3])
34
34
  expect(suppressed_emails.length).to eq(3)
35
35
  expect(suppressed_emails[0]).to eq(@email1)
36
36
  expect(suppressed_emails[1]).to eq(@email2)
37
37
  expect(suppressed_emails[2]).to eq(@email3)
38
38
  # get the suppressions
39
39
  suppressions = @client.get_suppressions(@email1)
40
- expect(suppressions.length>=1).to eq(true)
40
+ expect(suppressions.length >= 1).to eq(true)
41
41
  expect(suppressions[0].name).to eq(@group_name)
42
42
  expect(suppressions[0].description).to eq(@group_desc)
43
43
  expect(suppressions[0].suppressed).to eq(true)
@@ -53,7 +53,9 @@ describe "SendGrid4r::REST::Asm::Groups::Suppressions" do
53
53
  @client.delete_suppressed_email(new_group.id, @email3)
54
54
  # delete the group
55
55
  @client.delete_group(new_group.id)
56
- expect{@client.get_group(new_group.id)}.to raise_error(RestClient::ResourceNotFound)
56
+ expect do
57
+ @client.get_group(new_group.id)
58
+ end.to raise_error(RestClient::ResourceNotFound)
57
59
  end
58
60
  end
59
61
  end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe 'SendGrid4r::REST::Categories' 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
+ it 'is normal when nothing specified' do
13
+ categories = @client.get_categories
14
+ expect(true).to eq(categories.is_a?(Array))
15
+ expect(categories.length >= 0).to eq(true)
16
+ categories.each do |category|
17
+ expect(category.category.length > 0).to eq(true)
18
+ end
19
+ end
20
+
21
+ it 'is normal when specify category' do
22
+ categories = @client.get_categories('Newsletter', nil, nil)
23
+ expect(true).to eq(categories.is_a?(Array))
24
+ expect(categories.length).to eq(1)
25
+ categories.each do |category|
26
+ expect(category.category).to eq('Newsletter')
27
+ end
28
+ end
29
+
30
+ it 'returns is normal' do
31
+ categories = @client.get_categories(nil, 5, 2)
32
+ expect(true).to eq(categories.is_a?(Array))
33
+ expect(categories.length).to eq(5)
34
+ categories.each do |category|
35
+ expect(category.category.length > 0).to eq(true)
36
+ end
37
+ end
38
+ end
39
+ end