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