sendgrid-ruby 5.1.0 → 5.2.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.
- checksums.yaml +4 -4
 - data/.env_sample +1 -0
 - data/.github/PULL_REQUEST_TEMPLATE +24 -0
 - data/CHANGELOG.md +5 -0
 - data/CODE_OF_CONDUCT.md +41 -0
 - data/CONTRIBUTING.md +14 -13
 - data/LICENSE.txt +1 -1
 - data/README.md +9 -5
 - data/TROUBLESHOOTING.md +21 -1
 - data/USAGE.md +45 -46
 - data/USE_CASES.md +33 -3
 - data/examples/helpers/stats/example.rb +42 -0
 - data/lib/sendgrid-ruby.rb +3 -0
 - data/lib/sendgrid/helpers/mail/email.rb +11 -2
 - data/lib/sendgrid/helpers/settings/README.md +2 -2
 - data/lib/sendgrid/helpers/stats/email_stats.rb +46 -0
 - data/lib/sendgrid/helpers/stats/metrics.rb +35 -0
 - data/lib/sendgrid/helpers/stats/stats_response.rb +31 -0
 - data/lib/sendgrid/version.rb +1 -1
 - data/mail_helper_v3.md +38 -30
 - data/spec/sendgrid/helpers/stats/email_stats_spec.rb +112 -0
 - data/spec/sendgrid/helpers/stats/metrics_spec.rb +46 -0
 - data/spec/sendgrid/helpers/stats/stats_response_spec.rb +76 -0
 - data/test/sendgrid/helpers/mail/test_email.rb +34 -0
 - data/test/sendgrid/test_sendgrid-ruby.rb +1 -1
 - metadata +17 -2
 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe SendGrid::Metrics do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:params) do
         
     | 
| 
      
 5 
     | 
    
         
            +
                {
         
     | 
| 
      
 6 
     | 
    
         
            +
                  "date" => "2017-10-01",
         
     | 
| 
      
 7 
     | 
    
         
            +
                  "blocks" => 101,
         
     | 
| 
      
 8 
     | 
    
         
            +
                  "bounce_drops" => 102,
         
     | 
| 
      
 9 
     | 
    
         
            +
                  "bounces" => 103,
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "clicks" => 104,
         
     | 
| 
      
 11 
     | 
    
         
            +
                  "deferred" => 105,
         
     | 
| 
      
 12 
     | 
    
         
            +
                  "delivered" => 106,
         
     | 
| 
      
 13 
     | 
    
         
            +
                  "invalid_emails" => 107,
         
     | 
| 
      
 14 
     | 
    
         
            +
                  "opens" => 108,
         
     | 
| 
      
 15 
     | 
    
         
            +
                  "processed" => 109,
         
     | 
| 
      
 16 
     | 
    
         
            +
                  "requests" => 110,
         
     | 
| 
      
 17 
     | 
    
         
            +
                  "spam_report_drops" => 111,
         
     | 
| 
      
 18 
     | 
    
         
            +
                  "spam_reports" => 112,
         
     | 
| 
      
 19 
     | 
    
         
            +
                  "unique_clicks" => 113,
         
     | 
| 
      
 20 
     | 
    
         
            +
                  "unique_opens" => 114,
         
     | 
| 
      
 21 
     | 
    
         
            +
                  "unsubscribe_drops" => 115,
         
     | 
| 
      
 22 
     | 
    
         
            +
                  "unsubscribes" => 116
         
     | 
| 
      
 23 
     | 
    
         
            +
                }
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              subject { described_class.new(params) }
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              it 'initializes with metric parameters' do
         
     | 
| 
      
 29 
     | 
    
         
            +
                expect(subject).to be_a SendGrid::Metrics
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              it 'returns date as object' do
         
     | 
| 
      
 33 
     | 
    
         
            +
                expect(subject.date).to be_a Date
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              %w(
         
     | 
| 
      
 37 
     | 
    
         
            +
                blocks bounce_drops bounces clicks deferred delivered invalid_emails
         
     | 
| 
      
 38 
     | 
    
         
            +
                opens processed requests spam_report_drops spam_reports unique_clicks
         
     | 
| 
      
 39 
     | 
    
         
            +
                unique_opens unsubscribe_drops unsubscribes
         
     | 
| 
      
 40 
     | 
    
         
            +
              ).each do |attribute|
         
     | 
| 
      
 41 
     | 
    
         
            +
                it "responds to #{attribute}" do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  expect(subject).to respond_to(attribute.to_sym)
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe SendGrid::StatsResponse do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:params) do
         
     | 
| 
      
 5 
     | 
    
         
            +
                [{
         
     | 
| 
      
 6 
     | 
    
         
            +
                  "date" => "2017-10-01",
         
     | 
| 
      
 7 
     | 
    
         
            +
                  "stats" => [
         
     | 
| 
      
 8 
     | 
    
         
            +
                    {"metrics" =>
         
     | 
| 
      
 9 
     | 
    
         
            +
                      {
         
     | 
| 
      
 10 
     | 
    
         
            +
                        "blocks" => 101,
         
     | 
| 
      
 11 
     | 
    
         
            +
                        "bounce_drops" => 102,
         
     | 
| 
      
 12 
     | 
    
         
            +
                        "bounces" => 103,
         
     | 
| 
      
 13 
     | 
    
         
            +
                        "clicks" => 104,
         
     | 
| 
      
 14 
     | 
    
         
            +
                        "deferred" => 105,
         
     | 
| 
      
 15 
     | 
    
         
            +
                        "delivered" => 106,
         
     | 
| 
      
 16 
     | 
    
         
            +
                        "invalid_emails" => 107,
         
     | 
| 
      
 17 
     | 
    
         
            +
                        "opens" => 108,
         
     | 
| 
      
 18 
     | 
    
         
            +
                        "processed" => 109,
         
     | 
| 
      
 19 
     | 
    
         
            +
                        "requests" => 110,
         
     | 
| 
      
 20 
     | 
    
         
            +
                        "spam_report_drops" => 111,
         
     | 
| 
      
 21 
     | 
    
         
            +
                        "spam_reports" => 112,
         
     | 
| 
      
 22 
     | 
    
         
            +
                        "unique_clicks" => 113,
         
     | 
| 
      
 23 
     | 
    
         
            +
                        "unique_opens" => 114,
         
     | 
| 
      
 24 
     | 
    
         
            +
                        "unsubscribe_drops" => 115,
         
     | 
| 
      
 25 
     | 
    
         
            +
                        "unsubscribes" => 116
         
     | 
| 
      
 26 
     | 
    
         
            +
                      }
         
     | 
| 
      
 27 
     | 
    
         
            +
                    }
         
     | 
| 
      
 28 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 29 
     | 
    
         
            +
                }]
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              subject { described_class.new(params) }
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              it 'initialized with JSON response body' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                expect(subject).to be_a SendGrid::StatsResponse
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              describe '#metrics' do
         
     | 
| 
      
 39 
     | 
    
         
            +
                it 'returns an array of metrics' do
         
     | 
| 
      
 40 
     | 
    
         
            +
                  metric = subject.metrics.first
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  expect(subject.metrics).to be_a Array
         
     | 
| 
      
 43 
     | 
    
         
            +
                  expect(metric.date.to_s).to eq('2017-10-01')
         
     | 
| 
      
 44 
     | 
    
         
            +
                  expect(metric.requests).to eq(110)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  expect(metric.clicks).to eq(104)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  expect(metric.bounces).to eq(103)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  expect(metric.opens).to eq(108)
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              context 'errors' do
         
     | 
| 
      
 52 
     | 
    
         
            +
                let(:error_params) do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  {
         
     | 
| 
      
 54 
     | 
    
         
            +
                    "errors" => [
         
     | 
| 
      
 55 
     | 
    
         
            +
                      {
         
     | 
| 
      
 56 
     | 
    
         
            +
                        "message" => "end_date should be a YYYY-MM-DD formatted date"
         
     | 
| 
      
 57 
     | 
    
         
            +
                      }
         
     | 
| 
      
 58 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 59 
     | 
    
         
            +
                  }
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                subject { described_class.new(error_params) }
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                describe '#errors' do
         
     | 
| 
      
 65 
     | 
    
         
            +
                  it 'shows a list of errors' do
         
     | 
| 
      
 66 
     | 
    
         
            +
                    expect(subject.errors).to include('end_date should be a YYYY-MM-DD formatted date')
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                describe '#error?' do
         
     | 
| 
      
 71 
     | 
    
         
            +
                  it 'returns true if there is an error' do
         
     | 
| 
      
 72 
     | 
    
         
            +
                    expect(subject.error?).to be_truthy
         
     | 
| 
      
 73 
     | 
    
         
            +
                  end
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_relative '../../../../lib/sendgrid/helpers/mail/email'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'minitest/autorun'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            class TestEmail < Minitest::Test
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              include SendGrid
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              def test_split_email_full_email
         
     | 
| 
      
 9 
     | 
    
         
            +
                @email = Email.new(email: "Example User <test1@example.com>")
         
     | 
| 
      
 10 
     | 
    
         
            +
                expected_json = {
         
     | 
| 
      
 11 
     | 
    
         
            +
                    "email"=>"test1@example.com",
         
     | 
| 
      
 12 
     | 
    
         
            +
                    "name"=>"Example User"
         
     | 
| 
      
 13 
     | 
    
         
            +
                }
         
     | 
| 
      
 14 
     | 
    
         
            +
                assert_equal @email.to_json, expected_json
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def test_split_email_only_email
         
     | 
| 
      
 18 
     | 
    
         
            +
                @email = Email.new(email: "test1@example.com")
         
     | 
| 
      
 19 
     | 
    
         
            +
                expected_json = {
         
     | 
| 
      
 20 
     | 
    
         
            +
                    "email"=>"test1@example.com",
         
     | 
| 
      
 21 
     | 
    
         
            +
                }
         
     | 
| 
      
 22 
     | 
    
         
            +
                assert_equal @email.to_json, expected_json
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def test_split_email_name_and_email
         
     | 
| 
      
 26 
     | 
    
         
            +
                @email = Email.new(name: "Example User", email: "test1@example.com")
         
     | 
| 
      
 27 
     | 
    
         
            +
                expected_json = {
         
     | 
| 
      
 28 
     | 
    
         
            +
                    "email"=>"test1@example.com",
         
     | 
| 
      
 29 
     | 
    
         
            +
                    "name"=>"Example User"
         
     | 
| 
      
 30 
     | 
    
         
            +
                }
         
     | 
| 
      
 31 
     | 
    
         
            +
                assert_equal @email.to_json, expected_json
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -55,7 +55,7 @@ class TestAPI < MiniTest::Test 
     | 
|
| 
       55 
55 
     | 
    
         
             
                        ')
         
     | 
| 
       56 
56 
     | 
    
         
             
                    assert_equal(test_headers, sg.request_headers)
         
     | 
| 
       57 
57 
     | 
    
         
             
                    assert_equal("v3", sg.version)
         
     | 
| 
       58 
     | 
    
         
            -
                    assert_equal("5. 
     | 
| 
      
 58 
     | 
    
         
            +
                    assert_equal("5.2.0", SendGrid::VERSION)
         
     | 
| 
       59 
59 
     | 
    
         
             
                    assert_instance_of(SendGrid::Client, sg.client)
         
     | 
| 
       60 
60 
     | 
    
         
             
                end
         
     | 
| 
       61 
61 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sendgrid-ruby
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 5. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 5.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Elmer Thomas
         
     | 
| 
         @@ -10,7 +10,7 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       11 
11 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       12 
12 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       13 
     | 
    
         
            -
            date: 2017- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2017-10-31 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: ruby_http_client
         
     | 
| 
         @@ -122,10 +122,13 @@ executables: [] 
     | 
|
| 
       122 
122 
     | 
    
         
             
            extensions: []
         
     | 
| 
       123 
123 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       124 
124 
     | 
    
         
             
            files:
         
     | 
| 
      
 125 
     | 
    
         
            +
            - ".env_sample"
         
     | 
| 
       125 
126 
     | 
    
         
             
            - ".github/ISSUE_TEMPLATE"
         
     | 
| 
      
 127 
     | 
    
         
            +
            - ".github/PULL_REQUEST_TEMPLATE"
         
     | 
| 
       126 
128 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       127 
129 
     | 
    
         
             
            - ".travis.yml"
         
     | 
| 
       128 
130 
     | 
    
         
             
            - CHANGELOG.md
         
     | 
| 
      
 131 
     | 
    
         
            +
            - CODE_OF_CONDUCT.md
         
     | 
| 
       129 
132 
     | 
    
         
             
            - CONTRIBUTING.md
         
     | 
| 
       130 
133 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       131 
134 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
         @@ -148,6 +151,7 @@ files: 
     | 
|
| 
       148 
151 
     | 
    
         
             
            - examples/geo/geo.rb
         
     | 
| 
       149 
152 
     | 
    
         
             
            - examples/helpers/mail/example.rb
         
     | 
| 
       150 
153 
     | 
    
         
             
            - examples/helpers/settings/example.rb
         
     | 
| 
      
 154 
     | 
    
         
            +
            - examples/helpers/stats/example.rb
         
     | 
| 
       151 
155 
     | 
    
         
             
            - examples/ips/ips.rb
         
     | 
| 
       152 
156 
     | 
    
         
             
            - examples/mail/mail.rb
         
     | 
| 
       153 
157 
     | 
    
         
             
            - examples/mailboxproviders/mailboxproviders.rb
         
     | 
| 
         @@ -202,6 +206,9 @@ files: 
     | 
|
| 
       202 
206 
     | 
    
         
             
            - lib/sendgrid/helpers/settings/settings.rb
         
     | 
| 
       203 
207 
     | 
    
         
             
            - lib/sendgrid/helpers/settings/tracking_settings_dto.rb
         
     | 
| 
       204 
208 
     | 
    
         
             
            - lib/sendgrid/helpers/settings/user_settings_dto.rb
         
     | 
| 
      
 209 
     | 
    
         
            +
            - lib/sendgrid/helpers/stats/email_stats.rb
         
     | 
| 
      
 210 
     | 
    
         
            +
            - lib/sendgrid/helpers/stats/metrics.rb
         
     | 
| 
      
 211 
     | 
    
         
            +
            - lib/sendgrid/helpers/stats/stats_response.rb
         
     | 
| 
       205 
212 
     | 
    
         
             
            - lib/sendgrid/version.rb
         
     | 
| 
       206 
213 
     | 
    
         
             
            - mail_helper_v3.md
         
     | 
| 
       207 
214 
     | 
    
         
             
            - sendgrid-ruby.gemspec
         
     | 
| 
         @@ -210,9 +217,13 @@ files: 
     | 
|
| 
       210 
217 
     | 
    
         
             
            - spec/sendgrid/helpers/settings/settings_spec.rb
         
     | 
| 
       211 
218 
     | 
    
         
             
            - spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb
         
     | 
| 
       212 
219 
     | 
    
         
             
            - spec/sendgrid/helpers/settings/user_settings_dto_spec.rb
         
     | 
| 
      
 220 
     | 
    
         
            +
            - spec/sendgrid/helpers/stats/email_stats_spec.rb
         
     | 
| 
      
 221 
     | 
    
         
            +
            - spec/sendgrid/helpers/stats/metrics_spec.rb
         
     | 
| 
      
 222 
     | 
    
         
            +
            - spec/sendgrid/helpers/stats/stats_response_spec.rb
         
     | 
| 
       213 
223 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       214 
224 
     | 
    
         
             
            - test/prism.sh
         
     | 
| 
       215 
225 
     | 
    
         
             
            - test/sendgrid/helpers/mail/test_category.rb
         
     | 
| 
      
 226 
     | 
    
         
            +
            - test/sendgrid/helpers/mail/test_email.rb
         
     | 
| 
       216 
227 
     | 
    
         
             
            - test/sendgrid/helpers/mail/test_mail.rb
         
     | 
| 
       217 
228 
     | 
    
         
             
            - test/sendgrid/helpers/mail/test_personalizations.rb
         
     | 
| 
       218 
229 
     | 
    
         
             
            - test/sendgrid/test_sendgrid-ruby.rb
         
     | 
| 
         @@ -246,9 +257,13 @@ test_files: 
     | 
|
| 
       246 
257 
     | 
    
         
             
            - spec/sendgrid/helpers/settings/settings_spec.rb
         
     | 
| 
       247 
258 
     | 
    
         
             
            - spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb
         
     | 
| 
       248 
259 
     | 
    
         
             
            - spec/sendgrid/helpers/settings/user_settings_dto_spec.rb
         
     | 
| 
      
 260 
     | 
    
         
            +
            - spec/sendgrid/helpers/stats/email_stats_spec.rb
         
     | 
| 
      
 261 
     | 
    
         
            +
            - spec/sendgrid/helpers/stats/metrics_spec.rb
         
     | 
| 
      
 262 
     | 
    
         
            +
            - spec/sendgrid/helpers/stats/stats_response_spec.rb
         
     | 
| 
       249 
263 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       250 
264 
     | 
    
         
             
            - test/prism.sh
         
     | 
| 
       251 
265 
     | 
    
         
             
            - test/sendgrid/helpers/mail/test_category.rb
         
     | 
| 
      
 266 
     | 
    
         
            +
            - test/sendgrid/helpers/mail/test_email.rb
         
     | 
| 
       252 
267 
     | 
    
         
             
            - test/sendgrid/helpers/mail/test_mail.rb
         
     | 
| 
       253 
268 
     | 
    
         
             
            - test/sendgrid/helpers/mail/test_personalizations.rb
         
     | 
| 
       254 
269 
     | 
    
         
             
            - test/sendgrid/test_sendgrid-ruby.rb
         
     |