Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,19 @@ RuboCop::RakeTask.new

task default: %i[test]

task lint: %i[rubocop]
task lint: %i[rubocop]

# Legacy tests task
Minitest::TestTask.create(:legacy_test) do |t|
t.libs << "test"
t.test_globs = ["test/square_legacy/**/*_test.rb"]
end

# Integration tests
task :integration_test do
integration_test_files = Dir.glob("test/square/integration/**/*.rb").sort
cmd = "ruby -Ilib:test:. -w -e 'require \"minitest/autorun\"; "
cmd += integration_test_files.map { |f| "require \"#{f}\"" }.join("; ")
cmd += "'"
sh cmd
end
25 changes: 21 additions & 4 deletions lib/square/customers/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,13 @@ def list(request_options: {}, **params)
#
# @return [Square::Types::CreateCustomerResponse]
def create(request_options: {}, **params)
_request = params
_response = @client.send(_request)
_response = @client.send(Internal::JSON::Request.new(
base_url: request_options[:base_url] || Square::Environment::SANDBOX,
path: "/v2/customers",
method: "POST",
body: Types::CreateCustomerRequest.new(params[:request]).to_h,
request_options: request_options
))
if _response.code >= "200" && _response.code < "300"
return Square::Types::CreateCustomerResponse.load(_response.body)
else
Expand Down Expand Up @@ -170,8 +175,20 @@ def update(request_options: {}, **params)
#
# @return [Square::Types::DeleteCustomerResponse]
def delete(request_options: {}, **params)
_request = params
_response = @client.send(_request)
_request = Types::DeleteCustomersRequest.new(params[:request]).to_h
# Pull out path params explicitly
_customer_id = _request[:customer_id]
_request = _request.except(:customer_id)


_query_params = _request
_response = @client.send(Internal::JSON::Request.new(
base_url: request_options[:base_url] || Square::Environment::SANDBOX,
path: "/v2/customers/#{_customer_id}",
method: "DELETE",
query: _query_params,
request_options: request_options
))
if _response.code >= "200" && _response.code < "300"
return Square::Types::DeleteCustomerResponse.load(_response.body)
else
Expand Down
67 changes: 67 additions & 0 deletions test/square/integration/client_tests/test_customers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# frozen_string_literal: true

require "test_helper"

describe Square::Customers::Client do
describe "#create and delete customer" do
it "creates a customer" do

_create_request = Square::Customers::Types::CreateCustomerRequest.new(
given_name: "Amelia",
family_name: "Earhart",
email_address: "Amelia.Earhart@example.com",
address: {
address_line_1: "500 Electric Ave",
address_line_2: "Suite 600",
locality: "New York",
administrative_district_level_1: "NY",
postal_code: "10003",
country: "US"
},
phone_number: "+1-212-555-4240",
reference_id: "YOUR_REFERENCE_ID",
note: "a customer"
)

puts "create customer request #{_create_request.to_h}" if verbose?

response = client.customers.create(request: _create_request.to_h)
refute_nil response
assert_equal response.class, Square::Types::CreateCustomerResponse
refute_nil response.customer.id
refute_nil response.customer.version
puts "create customer response #{response.to_h}" if verbose?

_delete_request = Square::Customers::Types::DeleteCustomersRequest.new(
customer_id: response.customer.id,
version: response.customer.version
)

puts "delete customer request #{_delete_request.to_h}" if verbose?

response = client.customers.delete(request: _delete_request.to_h)
refute_nil response
assert_equal response.class, Square::Types::DeleteCustomerResponse
assert_nil response.errors
puts "delete customer response #{response.to_h}" if verbose?
end
it "validates hash behavior with optional fields" do
has_version = Square::Customers::Types::DeleteCustomersRequest.new(
customer_id: "123",
version: 1
).to_h
missing_version = Square::Customers::Types::DeleteCustomersRequest.new(
customer_id: "123"
).to_h

assert_equal has_version.keys.length, 2
assert_equal missing_version.keys.length, 1

has_version = has_version.except(:customer_id)
missing_version = missing_version.except(:customer_id)

assert_equal has_version.keys.length, 1
assert_equal missing_version.keys.length, 0
end
end
end
2 changes: 1 addition & 1 deletion test/square/integration/integration_test_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
require 'minitest/hell'
require 'minitest/pride'
require 'minitest/proveit'
require_relative 'test_helper'
require 'test_helper'

class IntegrationTestBase < Minitest::Test
parallelize_me!
Expand Down