ruby-pardot 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +9 -0
  4. data/Gemfile +3 -1
  5. data/Gemfile.lock +5 -5
  6. data/README.rdoc +19 -17
  7. data/Rakefile +2 -3
  8. data/lib/pardot/authentication.rb +23 -12
  9. data/lib/pardot/client.rb +17 -6
  10. data/lib/pardot/error.rb +6 -2
  11. data/lib/pardot/http.rb +47 -44
  12. data/lib/pardot/objects/custom_fields.rb +13 -17
  13. data/lib/pardot/objects/emails.rb +9 -14
  14. data/lib/pardot/objects/list_memberships.rb +8 -12
  15. data/lib/pardot/objects/lists.rb +20 -25
  16. data/lib/pardot/objects/opportunities.rb +21 -26
  17. data/lib/pardot/objects/prospect_accounts.rb +6 -7
  18. data/lib/pardot/objects/prospects.rb +26 -30
  19. data/lib/pardot/objects/users.rb +17 -21
  20. data/lib/pardot/objects/visitor_activities.rb +15 -19
  21. data/lib/pardot/objects/visitors.rb +17 -21
  22. data/lib/pardot/objects/visits.rb +15 -19
  23. data/lib/pardot/version.rb +1 -1
  24. data/ruby-pardot.gemspec +14 -12
  25. data/spec/pardot/authentication_spec.rb +78 -44
  26. data/spec/pardot/client_spec.rb +50 -15
  27. data/spec/pardot/error_spec.rb +6 -4
  28. data/spec/pardot/http_spec.rb +83 -92
  29. data/spec/pardot/objects/custom_fields_spec.rb +48 -53
  30. data/spec/pardot/objects/emails_spec.rb +34 -36
  31. data/spec/pardot/objects/lists_spec.rb +34 -38
  32. data/spec/pardot/objects/opportunities_spec.rb +58 -61
  33. data/spec/pardot/objects/prospect_accounts_spec.rb +72 -75
  34. data/spec/pardot/objects/prospects_spec.rb +56 -56
  35. data/spec/pardot/objects/users_spec.rb +58 -61
  36. data/spec/pardot/objects/visitor_activities_spec.rb +57 -61
  37. data/spec/pardot/objects/visitors_spec.rb +56 -61
  38. data/spec/pardot/objects/visits_spec.rb +56 -61
  39. data/spec/spec_helper.rb +2 -0
  40. data/spec/support/client_support.rb +40 -4
  41. data/spec/support/fakeweb.rb +13 -8
  42. metadata +8 -7
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  describe Pardot::ResponseError do
3
5
  before do
4
6
  @res = {
5
- "code" => "9",
6
- "__content__" => "A prospect with the specified email address already exists"
7
+ 'code' => '9',
8
+ '__content__' => 'A prospect with the specified email address already exists'
7
9
  }
8
10
  end
9
11
 
@@ -21,10 +23,10 @@ describe Pardot::ResponseError do
21
23
  described_class.new(@res)
22
24
  end
23
25
  specify do
24
- expect(subject.to_s).to eq(@res["__content__"])
26
+ expect(subject.to_s).to eq(@res['__content__'])
25
27
  end
26
28
  specify do
27
- expect(subject.message).to eq(@res["__content__"])
29
+ expect(subject.message).to eq(@res['__content__'])
28
30
  end
29
31
  end
30
32
 
@@ -1,133 +1,124 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
2
4
 
3
5
  describe Pardot::Http do
4
-
5
6
  before do
6
7
  @client = create_client
7
- fake_authenticate @client, "my_api_key"
8
+ fake_authenticate @client, 'my_api_key'
8
9
  end
9
-
10
+
10
11
  def create_client
11
- @client = Pardot::Client.new "user@test.com", "foo", "bar"
12
+ @client = Pardot::Client.new 'user@test.com', 'foo', 'bar'
12
13
  end
13
-
14
- describe "get" do
15
-
16
- def get object = "foo", path = "/bar", params = {}
14
+
15
+ describe 'get' do
16
+ def get(object = 'foo', path = '/bar', params = {})
17
17
  @client.get object, path, params
18
18
  end
19
-
20
- it "should notice errors and raise them as Pardot::ResponseError" do
21
- fake_get "/api/foo/version/3/bar?format=simple",
22
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
23
-
24
19
 
25
- expect(lambda { get }).to raise_error(Pardot::ResponseError)
20
+ it 'should notice errors and raise them as Pardot::ResponseError' do
21
+ fake_get '/api/foo/version/3/bar?format=simple',
22
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
23
+
24
+ expect(-> { get }).to raise_error(Pardot::ResponseError)
26
25
  end
27
-
28
- it "should catch and reraise SocketErrors as Pardot::NetError" do
26
+
27
+ it 'should catch and reraise SocketErrors as Pardot::NetError' do
29
28
  expect(Pardot::Client).to receive(:get).and_raise(SocketError)
30
-
31
- expect(lambda { get }).to raise_error(Pardot::NetError)
32
- end
33
-
34
- it "should call handle_expired_api_key when the api key expires" do
35
- fake_get "/api/foo/version/3/bar?format=simple",
36
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
37
-
29
+
30
+ expect(-> { get }).to raise_error(Pardot::NetError)
31
+ end
32
+
33
+ it 'should call handle_expired_api_key when the api key expires' do
34
+ fake_get '/api/foo/version/3/bar?format=simple',
35
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
36
+
38
37
  expect(@client).to receive(:handle_expired_api_key)
39
38
  get
40
39
  end
41
-
42
40
  end
43
-
44
- describe "post" do
45
-
46
- def post object = "foo", path = "/bar", params = {}
41
+
42
+ describe 'post' do
43
+ def post(object = 'foo', path = '/bar', params = {})
47
44
  @client.post object, path, params
48
45
  end
49
-
50
- it "should notice errors and raise them as Pardot::ResponseError" do
51
- fake_post "/api/foo/version/3/bar?format=simple",
52
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
53
-
54
- expect(lambda { post }).to raise_error(Pardot::ResponseError)
46
+
47
+ it 'should notice errors and raise them as Pardot::ResponseError' do
48
+ fake_post '/api/foo/version/3/bar?format=simple',
49
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
50
+
51
+ expect(-> { post }).to raise_error(Pardot::ResponseError)
55
52
  end
56
-
57
- it "should catch and reraise SocketErrors as Pardot::NetError" do
53
+
54
+ it 'should catch and reraise SocketErrors as Pardot::NetError' do
58
55
  expect(Pardot::Client).to receive(:post).and_raise(SocketError)
59
-
60
- expect(lambda { post }).to raise_error(Pardot::NetError)
61
- end
62
-
63
- it "should call handle_expired_api_key when the api key expires" do
64
- fake_post "/api/foo/version/3/bar?format=simple",
65
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
66
-
56
+
57
+ expect(-> { post }).to raise_error(Pardot::NetError)
58
+ end
59
+
60
+ it 'should call handle_expired_api_key when the api key expires' do
61
+ fake_post '/api/foo/version/3/bar?format=simple',
62
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
63
+
67
64
  expect(@client).to receive(:handle_expired_api_key)
68
65
  post
69
66
  end
70
-
71
67
  end
72
68
 
73
- describe "getV4" do
74
-
75
- def get object = "foo", path = "/bar", params = {}
76
- @client.version = "4"
69
+ describe 'getV4' do
70
+ def get(object = 'foo', path = '/bar', params = {})
71
+ @client.version = '4'
77
72
  @client.get object, path, params
78
73
  end
79
-
80
- it "should notice errors and raise them as Pardot::ResponseError" do
81
- fake_get "/api/foo/version/4/bar?format=simple",
82
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
83
-
84
- expect(lambda { get }).to raise_error(Pardot::ResponseError)
74
+
75
+ it 'should notice errors and raise them as Pardot::ResponseError' do
76
+ fake_get '/api/foo/version/4/bar?format=simple',
77
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
78
+
79
+ expect(-> { get }).to raise_error(Pardot::ResponseError)
85
80
  end
86
-
87
- it "should catch and reraise SocketErrors as Pardot::NetError" do
81
+
82
+ it 'should catch and reraise SocketErrors as Pardot::NetError' do
88
83
  expect(Pardot::Client).to receive(:get).and_raise(SocketError)
89
-
90
- expect(lambda { get }).to raise_error(Pardot::NetError)
91
- end
92
-
93
- it "should call handle_expired_api_key when the api key expires" do
94
- fake_get "/api/foo/version/4/bar?format=simple",
95
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
96
-
84
+
85
+ expect(-> { get }).to raise_error(Pardot::NetError)
86
+ end
87
+
88
+ it 'should call handle_expired_api_key when the api key expires' do
89
+ fake_get '/api/foo/version/4/bar?format=simple',
90
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
91
+
97
92
  expect(@client).to receive(:handle_expired_api_key)
98
93
  get
99
94
  end
100
-
101
95
  end
102
-
103
- describe "postV4" do
104
-
105
- def post object = "foo", path = "/bar", params = {}
106
- @client.version = "4"
96
+
97
+ describe 'postV4' do
98
+ def post(object = 'foo', path = '/bar', params = {})
99
+ @client.version = '4'
107
100
  @client.post object, path, params
108
101
  end
109
-
110
- it "should notice errors and raise them as Pardot::ResponseError" do
111
- fake_post "/api/foo/version/4/bar?format=simple",
112
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
113
-
114
- expect(lambda { post }).to raise_error(Pardot::ResponseError)
102
+
103
+ it 'should notice errors and raise them as Pardot::ResponseError' do
104
+ fake_post '/api/foo/version/4/bar?format=simple',
105
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Login failed</err>\n</rsp>\n)
106
+
107
+ expect(-> { post }).to raise_error(Pardot::ResponseError)
115
108
  end
116
-
117
- it "should catch and reraise SocketErrors as Pardot::NetError" do
109
+
110
+ it 'should catch and reraise SocketErrors as Pardot::NetError' do
118
111
  expect(Pardot::Client).to receive(:post).and_raise(SocketError)
119
-
120
- expect(lambda { post }).to raise_error(Pardot::NetError)
121
- end
122
-
123
- it "should call handle_expired_api_key when the api key expires" do
124
- fake_post "/api/foo/version/4/bar?format=simple",
125
- %(?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
126
-
112
+
113
+ expect(-> { post }).to raise_error(Pardot::NetError)
114
+ end
115
+
116
+ it 'should call handle_expired_api_key when the api key expires' do
117
+ fake_post '/api/foo/version/4/bar?format=simple',
118
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="fail" version="1.0">\n <err code="15">Invalid API key or user key</err>\n</rsp>\n)
119
+
127
120
  expect(@client).to receive(:handle_expired_api_key)
128
121
  post
129
122
  end
130
-
131
123
  end
132
-
133
- end
124
+ end
@@ -1,58 +1,53 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
4
 
3
5
  describe Pardot::Objects::CustomFields do
4
-
5
- before do
6
- @client = create_client
7
- end
8
-
9
- describe "query" do
10
-
11
- def sample_results
12
- %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
- <result>
14
- <total_results>1</total_results>
15
- <customField>
16
- <created_at>2019-11-26 13:40:37</created_at>
17
- <crm_id null="true" />
18
- <field_id>CustomObject1574793618883</field_id>
19
- <id>8932</id>
20
- <is_record_multiple_responses>false</is_record_multiple_responses>
21
- <is_use_values>false</is_use_values>
22
- <name>Ω≈ç√∫˜µ≤≥÷</name>
23
- <type>Text</type>
24
- <type_id>1</type_id>
25
- <updated_at>2019-11-26 13:40:37</updated_at>
26
- </customField>
27
- </result>
28
- </rsp>)
29
- end
30
-
31
- before do
32
- @client = create_client
33
- end
34
-
35
- it "should take in some arguments" do
36
- fake_get "/api/customField/version/3/do/query?id_greater_than=200&format=simple", sample_results
37
-
38
- expect(@client.custom_fields.query(:id_greater_than => 200)).to eq({"total_results" => 1,
39
- "customField"=>
40
- {
41
- "id"=>"8932",
42
- "name"=>"Ω≈ç√∫˜µ≤≥÷",
43
- "field_id"=>"CustomObject1574793618883",
44
- "type"=>"Text",
45
- "type_id"=>"1",
46
- "crm_id"=>{"null"=>"true"},
47
- "is_record_multiple_responses"=>"false",
48
- "is_use_values"=>"false",
49
- "created_at"=>"2019-11-26 13:40:37",
50
- "updated_at"=>"2019-11-26 13:40:37"
51
- }
52
- })
53
- assert_authorization_header
6
+ create_auth_managers.each do |auth_manager|
7
+ context auth_manager.test_name_suffix do
8
+ let(:client) { auth_manager.create_client }
9
+
10
+ describe 'query' do
11
+ def sample_results
12
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
+ <result>
14
+ <total_results>1</total_results>
15
+ <customField>
16
+ <created_at>2019-11-26 13:40:37</created_at>
17
+ <crm_id null="true" />
18
+ <field_id>CustomObject1574793618883</field_id>
19
+ <id>8932</id>
20
+ <is_record_multiple_responses>false</is_record_multiple_responses>
21
+ <is_use_values>false</is_use_values>
22
+ <name>Ω≈ç√∫˜µ≤≥÷</name>
23
+ <type>Text</type>
24
+ <type_id>1</type_id>
25
+ <updated_at>2019-11-26 13:40:37</updated_at>
26
+ </customField>
27
+ </result>
28
+ </rsp>)
29
+ end
30
+
31
+ it 'should take in some arguments' do
32
+ fake_get '/api/customField/version/3/do/query?id_greater_than=200&format=simple', sample_results
33
+
34
+ expect(client.custom_fields.query(id_greater_than: 200)).to eq({ 'total_results' => 1,
35
+ 'customField' =>
36
+ {
37
+ 'id' => '8932',
38
+ 'name' => 'Ω≈ç√∫˜µ≤≥÷',
39
+ 'field_id' => 'CustomObject1574793618883',
40
+ 'type' => 'Text',
41
+ 'type_id' => '1',
42
+ 'crm_id' => { 'null' => 'true' },
43
+ 'is_record_multiple_responses' => 'false',
44
+ 'is_use_values' => 'false',
45
+ 'created_at' => '2019-11-26 13:40:37',
46
+ 'updated_at' => '2019-11-26 13:40:37'
47
+ } })
48
+ assert_authorization_header auth_manager
49
+ end
50
+ end
54
51
  end
55
-
56
52
  end
57
-
58
53
  end
@@ -1,39 +1,37 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
1
+ # frozen_string_literal: true
2
2
 
3
- describe Pardot::Objects::Emails do
4
-
5
- before do
6
- @client = create_client
7
- end
8
-
9
- def sample_response
10
- %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
11
- <email>
12
- <name>My Email</name>
13
- </email>
14
- </rsp>)
15
- end
16
-
17
- before do
18
- @client = create_client
19
- end
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
20
4
 
21
- it "should take in the email ID" do
22
- fake_get "/api/email/version/3/do/read/id/12?format=simple", sample_response
23
- expect(@client.emails.read_by_id(12)).to eq({"name" => "My Email"})
24
- assert_authorization_header
25
- end
26
-
27
- it 'should send to a prospect' do
28
- fake_post '/api/email/version/3/do/send/prospect_id/42?campaign_id=765&email_template_id=86&format=simple', sample_response
29
- expect(@client.emails.send_to_prospect(42, :campaign_id => 765, :email_template_id => 86)).to eq({"name" => "My Email"})
30
- assert_authorization_header
31
- end
32
-
33
- it 'should send to a list' do
34
- fake_post '/api/email/version/3/do/send?email_template_id=200&list_ids[]=235&campaign_id=654&format=simple', sample_response
35
- expect(@client.emails.send_to_list(:email_template_id => 200, 'list_ids[]' => 235, :campaign_id => 654)).to eq({"name" => "My Email"})
36
- assert_authorization_header
5
+ describe Pardot::Objects::Emails do
6
+ create_auth_managers.each do |auth_manager|
7
+ context auth_manager.test_name_suffix do
8
+ let(:client) { auth_manager.create_client }
9
+
10
+ def sample_response
11
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
12
+ <email>
13
+ <name>My Email</name>
14
+ </email>
15
+ </rsp>)
16
+ end
17
+
18
+ it 'should take in the email ID' do
19
+ fake_get '/api/email/version/3/do/read/id/12?format=simple', sample_response
20
+ expect(client.emails.read_by_id(12)).to eq({ 'name' => 'My Email' })
21
+ assert_authorization_header auth_manager
22
+ end
23
+
24
+ it 'should send to a prospect' do
25
+ fake_post '/api/email/version/3/do/send/prospect_id/42?campaign_id=765&email_template_id=86&format=simple', sample_response
26
+ expect(client.emails.send_to_prospect(42, campaign_id: 765, email_template_id: 86)).to eq({ 'name' => 'My Email' })
27
+ assert_authorization_header auth_manager
28
+ end
29
+
30
+ it 'should send to a list' do
31
+ fake_post '/api/email/version/3/do/send?email_template_id=200&list_ids%5B%5D=235&campaign_id=654&format=simple', sample_response
32
+ expect(client.emails.send_to_list(:email_template_id => 200, 'list_ids[]' => 235, :campaign_id => 654)).to eq({ 'name' => 'My Email' })
33
+ assert_authorization_header auth_manager
34
+ end
35
+ end
37
36
  end
38
-
39
- end
37
+ end
@@ -1,42 +1,38 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
4
 
3
5
  describe Pardot::Objects::Lists do
4
-
5
- before do
6
- @client = create_client
7
- end
8
-
9
- describe "query" do
10
-
11
- def sample_results
12
- %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
- <result>
14
- <total_results>2</total_results>
15
- <list>
16
- <name>Asdf List</name>
17
- </list>
18
- <list>
19
- <name>Qwerty List</name>
20
- </list>
21
- </result>
22
- </rsp>)
23
- end
24
-
25
- before do
26
- @client = create_client
27
- end
28
-
29
- it "should take in some arguments" do
30
- fake_get "/api/list/version/3/do/query?id_greater_than=200&format=simple", sample_results
31
-
32
- expect(@client.lists.query(:id_greater_than => 200)).to eq({"total_results" => 2,
33
- "list"=>[
34
- {"name"=>"Asdf List"},
35
- {"name"=>"Qwerty List"}
36
- ]})
37
- assert_authorization_header
6
+ create_auth_managers.each do |auth_manager|
7
+ context auth_manager.test_name_suffix do
8
+ let(:client) { auth_manager.create_client }
9
+
10
+ describe 'query' do
11
+ def sample_results
12
+ %(<?xml version="1.0" encoding="UTF-8"?>\n<rsp stat="ok" version="1.0">
13
+ <result>
14
+ <total_results>2</total_results>
15
+ <list>
16
+ <name>Asdf List</name>
17
+ </list>
18
+ <list>
19
+ <name>Qwerty List</name>
20
+ </list>
21
+ </result>
22
+ </rsp>)
23
+ end
24
+
25
+ it 'should take in some arguments' do
26
+ fake_get '/api/list/version/3/do/query?id_greater_than=200&format=simple', sample_results
27
+
28
+ expect(client.lists.query(id_greater_than: 200)).to eq({ 'total_results' => 2,
29
+ 'list' => [
30
+ { 'name' => 'Asdf List' },
31
+ { 'name' => 'Qwerty List' }
32
+ ] })
33
+ assert_authorization_header auth_manager
34
+ end
35
+ end
38
36
  end
39
-
40
37
  end
41
-
42
- end
38
+ end