Skip to content

Commit 75a734a

Browse files
authored
[RB-326] v31 client updates (#73)
1 parent 8a5bb5b commit 75a734a

File tree

8 files changed

+193
-28
lines changed

8 files changed

+193
-28
lines changed

lib/xpm_ruby/connection.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ def put(endpoint:, data:)
3939
raise ConnectionTimeout.new(error.message)
4040
end
4141

42-
def delete(endpoint:, id:)
43-
response = build_connection(url: url).delete("#{endpoint}/#{id}", nil, headers)
42+
def delete(endpoint:, id:, params: {})
43+
query_string = CGI.unescape(params.to_query)
44+
response = build_connection(url: url).delete("#{endpoint}/#{id}?#{query_string}", nil, headers)
4445
handle_response(response)
4546
rescue Faraday::ConnectionFailed => error
4647
raise ConnectionFailed.new(error.message)

lib/xpm_ruby/contact.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ def update(access_token:, xero_tenant_id:, id:, contact:)
2424
response["Contact"]
2525
end
2626

27-
def delete(access_token:, xero_tenant_id:, contact_id:)
27+
def delete(access_token:, xero_tenant_id:, contact_id:, client_id: nil)
28+
request_params = { client_id: client_id }.compact
29+
2830
response = Connection
2931
.new(access_token: access_token, xero_tenant_id: xero_tenant_id)
30-
.delete(endpoint: "client.api/contact", id: contact_id)
32+
.delete(endpoint: "client.api/contact", id: contact_id, params: request_params)
3133

3234
response["Contact"]
3335
end

lib/xpm_ruby/schema/contact/update.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ module XpmRuby
44
module Schema
55
module Contact
66
Update = Types::Hash.schema(
7+
Client?: Types::Hash.schema(
8+
ID: Types::Coercible::String
9+
).with_key_transform(&:to_sym),
710
Name?: Types::String,
811
IsPrimary?: Types::String,
912
Salutation?: Types::String,

lib/xpm_ruby/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module XpmRuby
2-
VERSION = "0.3.0".freeze
2+
VERSION = "0.4.0".freeze
33
end

spec/vcr_cassettes/xpm_ruby/contact/delete.yml

Lines changed: 52 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/vcr_cassettes/xpm_ruby/contact/update.yml

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/xpm_ruby/contact_spec.rb

Lines changed: 62 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,46 @@ module XpmRuby
3030
let(:xero_tenant_id) { "0791dc22-8611-4c1c-8df7-1c5453d0795b" }
3131
let(:access_token) { "token" }
3232

33-
let(:contact) do
34-
{
35-
"Name" => "Acmer Pty Ltd Updated 3"
36-
}
33+
context "without Client ID" do
34+
let(:contact) do
35+
{
36+
"Name" => "Acmer Pty Ltd Updated 3"
37+
}
38+
end
39+
40+
it "updates contact" do
41+
VCR.use_cassette("xpm_ruby/contact/update") do
42+
updated_contact = Contact.update(
43+
access_token: access_token,
44+
xero_tenant_id: xero_tenant_id,
45+
id: 15412877,
46+
contact: contact)
47+
48+
expect(updated_contact["ID"]).not_to be_nil
49+
expect(updated_contact["Name"]).to eql(updated_contact["Name"])
50+
end
51+
end
3752
end
3853

39-
it "updates contact" do
40-
VCR.use_cassette("xpm_ruby/contact/update") do
41-
updated_contact = Contact.update(
42-
access_token: access_token,
43-
xero_tenant_id: xero_tenant_id,
44-
id: 15412877,
45-
contact: contact)
54+
context "with Client ID" do
55+
let(:contact) do
56+
{
57+
"Client" => { "ID" => 25655881 },
58+
"Name" => "Acmer Pty Ltd Updated 3"
59+
}
60+
end
61+
62+
it "updates contact" do
63+
VCR.use_cassette("xpm_ruby/contact/update") do
64+
updated_contact = Contact.update(
65+
access_token: access_token,
66+
xero_tenant_id: xero_tenant_id,
67+
id: 15412877,
68+
contact: contact)
4669

47-
expect(updated_contact["ID"]).not_to be_nil
48-
expect(updated_contact["Name"]).to eql(updated_contact["Name"])
70+
expect(updated_contact["ID"]).not_to be_nil
71+
expect(updated_contact["Name"]).to eql(updated_contact["Name"])
72+
end
4973
end
5074
end
5175
end
@@ -55,15 +79,32 @@ module XpmRuby
5579
let(:access_token) { "token" }
5680
let(:contact_id) { "14574323" }
5781

58-
it "deletes the contact" do
59-
VCR.use_cassette("xpm_ruby/contact/delete") do
60-
deleted_contact = Contact.delete(
61-
access_token: access_token,
62-
xero_tenant_id: xero_tenant_id,
63-
contact_id: contact_id)
82+
context "without Client ID" do
83+
it "deletes the contact" do
84+
VCR.use_cassette("xpm_ruby/contact/delete") do
85+
deleted_contact = Contact.delete(
86+
access_token: access_token,
87+
xero_tenant_id: xero_tenant_id,
88+
contact_id: contact_id)
89+
90+
expect(deleted_contact["ID"]).to eql(contact_id)
91+
expect(deleted_contact["Name"]).to eql("some guy person")
92+
end
93+
end
94+
end
95+
96+
context "with Client ID" do
97+
it "deletes the contact" do
98+
VCR.use_cassette("xpm_ruby/contact/delete") do
99+
deleted_contact = Contact.delete(
100+
access_token: access_token,
101+
xero_tenant_id: xero_tenant_id,
102+
contact_id: contact_id,
103+
client_id: 25655881)
64104

65-
expect(deleted_contact["ID"]).to eql(contact_id)
66-
expect(deleted_contact["Name"]).to eql("some guy person")
105+
expect(deleted_contact["ID"]).to eql(contact_id)
106+
expect(deleted_contact["Name"]).to eql("some guy person")
107+
end
67108
end
68109
end
69110
end

spec/xpm_ruby/schema/contact/update_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ module Schema
88
hash = { "Name" => "Joe Bloggs" }
99
expect { Contact::Update[hash] }.not_to raise_error
1010
end
11+
12+
context "with a client ID" do
13+
it "should not raise an error" do
14+
hash = { "Client" => { "ID" => "123" }, "Name" => "Joe Bloggs" }
15+
expect { Contact::Update[hash] }.not_to raise_error
16+
end
17+
end
1118
end
1219
end
1320
end

0 commit comments

Comments
 (0)