Skip to content

Commit 3c468a5

Browse files
committed
Merge pull request pardot#14 from drippdropp/prospect-account-support
Support for Prospect Accounts
2 parents 0ca0e4a + 00b6bca commit 3c468a5

File tree

4 files changed

+135
-0
lines changed

4 files changed

+135
-0
lines changed

lib/pardot/client.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class Client
1414
include Objects::ListMemberships
1515
include Objects::Opportunities
1616
include Objects::Prospects
17+
include Objects::ProspectAccounts
1718
include Objects::Users
1819
include Objects::Visitors
1920
include Objects::Visits
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
module Pardot
2+
module Objects
3+
module ProspectAccounts
4+
def prospect_accounts
5+
@prospect_accounts ||= ProspectAccounts.new self
6+
end
7+
8+
class ProspectAccounts
9+
10+
def initialize(client)
11+
@client = client
12+
end
13+
14+
def query(search_criteria)
15+
result = get '/do/query', search_criteria, 'result'
16+
result['total_results'] = result['total_results'].to_i if
17+
result['total_results']
18+
result
19+
end
20+
21+
def describe(params={})
22+
post('/do/describe', params)
23+
end
24+
25+
def create(params={})
26+
post('/do/create', params)
27+
end
28+
29+
# read_by_id
30+
# update_by_id
31+
[:read, :update].each do |verb|
32+
define_method(verb) do |id, params={}|
33+
post(api_url(verb, 'id', id), params)
34+
end
35+
end
36+
37+
private
38+
39+
def api_url(verb, direct_to, value)
40+
"/do/#{verb}/#{direct_to}/#{value}"
41+
end
42+
43+
def get(path, params={}, result='prospectAccount')
44+
response = @client.get('prospectAccount', path, params)
45+
result ? response[result] : response
46+
end
47+
48+
def post(path, params={}, result='prospectAccount')
49+
response = @client.post('prospectAccount', path, params)
50+
result ? response[result] : response
51+
end
52+
end
53+
end
54+
end
55+
end

lib/ruby-pardot.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
require 'pardot/objects/list_memberships'
1212
require 'pardot/objects/opportunities'
1313
require 'pardot/objects/prospects'
14+
require 'pardot/objects/prospect_accounts'
1415
require 'pardot/objects/users'
1516
require 'pardot/objects/visitors'
1617
require 'pardot/objects/visitor_activities'
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2+
3+
describe Pardot::Objects::ProspectAccounts 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"?>
13+
<rsp stat="ok" version="1.0">
14+
<result>
15+
<total_results>2</total_results>
16+
<prospectAccount>
17+
<name>Spaceships R Us</name>
18+
</prospectAccount>
19+
<prospectAccount>
20+
<name>Monsters Inc</name>
21+
</prospectAccount>
22+
</result>
23+
</rsp>)
24+
end
25+
26+
it "should take in some arguments and respond with valid items" do
27+
fake_get "/api/prospectAccount/version/3/do/query?assigned=true&format=simple&user_key=bar&api_key=my_api_key", sample_results
28+
29+
@client.prospect_accounts.query(:assigned => true).should == {'total_results' => 2,
30+
'prospectAccount'=>[
31+
{'name'=>'Spaceships R Us'},
32+
{'name'=>'Monsters Inc'}
33+
]}
34+
end
35+
36+
end
37+
38+
describe 'read' do
39+
def sample_results
40+
%(<?xml version="1.0" encoding="UTF-8"?>
41+
<rsp stat="ok" version="1.0">
42+
<prospectAccount>
43+
<id>1234</id>
44+
<name>SupaDupaPanda</name>
45+
</prospectAccount>
46+
</rsp>)
47+
end
48+
49+
it 'should return a valid account' do
50+
fake_post '/api/prospectAccount/version/3/do/read/id/1234?assigned=true&format=simple&user_key=bar&api_key=my_api_key', sample_results
51+
52+
@client.prospect_accounts.read('1234', :assigned => true).should == {'id' => '1234', 'name' => 'SupaDupaPanda' }
53+
end
54+
55+
end
56+
57+
58+
describe 'create' do
59+
60+
def sample_results
61+
%(<?xml version="1.0" encoding="UTF-8"?>
62+
<rsp stat="ok" version="1.0">
63+
<prospectAccount>
64+
<name>SuperPanda</name>
65+
</prospectAccount>
66+
</rsp>)
67+
end
68+
69+
it 'should return the prospect account' do
70+
fake_post '/api/prospectAccount/version/3/do/create?api_key=my_api_key&user_key=bar&format=simple&name=SuperPanda', sample_results
71+
72+
@client.prospect_accounts.create(:name => 'SuperPanda').should == {"name"=>"SuperPanda"}
73+
74+
end
75+
76+
end
77+
78+
end

0 commit comments

Comments
 (0)