sendgrid4r 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -0
- data/.travis.yml +2 -3
- data/README.md +3 -373
- data/Rakefile +1 -1
- data/lib/auth.rb +7 -9
- data/lib/client.rb +8 -9
- data/lib/sendgrid4r/factory/version_factory.rb +20 -10
- data/lib/sendgrid4r/rest/api.rb +28 -9
- data/lib/sendgrid4r/rest/asm/global_suppressions.rb +46 -0
- data/lib/sendgrid4r/rest/asm/groups.rb +69 -0
- data/lib/sendgrid4r/rest/asm/suppressions.rb +68 -0
- data/lib/sendgrid4r/rest/categories/categories.rb +38 -0
- data/lib/sendgrid4r/rest/ips/addresses.rb +74 -0
- data/lib/sendgrid4r/rest/ips/pools.rb +63 -0
- data/lib/sendgrid4r/rest/ips/warmup.rb +55 -0
- data/lib/sendgrid4r/rest/request.rb +34 -19
- data/lib/sendgrid4r/rest/settings/enforced_tls.rb +39 -0
- data/lib/sendgrid4r/rest/stats/advanced.rb +91 -0
- data/lib/sendgrid4r/rest/stats/category.rb +47 -0
- data/lib/sendgrid4r/rest/stats/global.rb +26 -0
- data/lib/sendgrid4r/rest/stats/parse.rb +26 -0
- data/lib/sendgrid4r/rest/stats/stats.rb +89 -0
- data/lib/sendgrid4r/rest/stats/subuser.rb +47 -0
- data/lib/sendgrid4r/rest/templates/templates.rb +61 -0
- data/lib/sendgrid4r/rest/templates/versions.rb +92 -0
- data/lib/sendgrid4r/version.rb +4 -1
- data/lib/sendgrid4r.rb +5 -2
- data/sendgrid4r.gemspec +13 -12
- data/spec/{global_suppressions_spec.rb → asm/global_suppressions_spec.rb} +25 -17
- data/spec/asm/groups_spec.rb +58 -0
- data/spec/{suppressions_spec.rb → asm/suppressions_spec.rb} +24 -22
- data/spec/categories/categories_spec.rb +39 -0
- data/spec/client_spec.rb +65 -50
- data/spec/ips/addresses_spec.rb +116 -0
- data/spec/ips/pools_spec.rb +43 -0
- data/spec/ips/warmup_spec.rb +52 -0
- data/spec/{enforced_tls_spec.rb → settings/enforced_tls_spec.rb} +12 -11
- data/spec/stats/advanced_spec.rb +243 -0
- data/spec/stats/category_spec.rb +112 -0
- data/spec/stats/global_spec.rb +64 -0
- data/spec/stats/parse_spec.rb +49 -0
- data/spec/stats/subuser_spec.rb +105 -0
- data/spec/templates/templates_spec.rb +66 -0
- data/spec/templates/versions_spec.rb +89 -0
- data/spec/version_factory_spec.rb +20 -15
- metadata +94 -42
- data/lib/sendgrid4r/rest/addresses.rb +0 -62
- data/lib/sendgrid4r/rest/enforced_tls.rb +0 -46
- data/lib/sendgrid4r/rest/global_suppressions.rb +0 -35
- data/lib/sendgrid4r/rest/groups.rb +0 -68
- data/lib/sendgrid4r/rest/pools.rb +0 -53
- data/lib/sendgrid4r/rest/suppressions.rb +0 -57
- data/lib/sendgrid4r/rest/templates.rb +0 -64
- data/lib/sendgrid4r/rest/versions.rb +0 -65
- data/lib/sendgrid4r/rest/warmup.rb +0 -53
- data/spec/addresses_spec.rb +0 -80
- data/spec/groups_spec.rb +0 -54
- data/spec/pools_spec.rb +0 -62
- data/spec/templates_spec.rb +0 -38
- data/spec/versions_spec.rb +0 -75
- 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
|
data/lib/sendgrid4r/version.rb
CHANGED
data/lib/sendgrid4r.rb
CHANGED
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 =
|
7
|
+
spec.name = 'sendgrid4r'
|
8
8
|
spec.version = SendGrid4r::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
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 = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
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__) + '
|
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(
|
9
|
-
|
10
|
-
@
|
11
|
-
@
|
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
|
15
|
-
it
|
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(
|
21
|
-
|
22
|
-
|
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(
|
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(
|
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__) + '
|
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(
|
9
|
-
|
10
|
-
@
|
11
|
-
@
|
12
|
-
@
|
13
|
-
@
|
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
|
17
|
-
it
|
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
|
22
|
-
if grp.name
|
23
|
-
|
24
|
-
|
25
|
-
|
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(
|
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
|
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
|