mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-10-04 00:00:47 -04:00
Better error message when passing non-string to custom method
Raises a slightly more helpful error message when passing a non-string to a custom method (currently, it reads "no implicit conversion of Hash into String", which is terrible). This a partial remediation for the problem encountered in #809.
This commit is contained in:
parent
267eae5e85
commit
d71cda7adf
@ -70,6 +70,11 @@ module Stripe
|
||||
end
|
||||
http_path ||= name.to_s
|
||||
define_singleton_method(name) do |id, params = {}, opts = {}|
|
||||
unless id.is_a?(String)
|
||||
raise ArgumentError,
|
||||
"id should be a string representing the ID of an API resource"
|
||||
end
|
||||
|
||||
url = "#{resource_url}/#{CGI.escape(id)}/#{CGI.escape(http_path)}"
|
||||
resp, opts = request(http_verb, url, params, opts)
|
||||
Util.convert_to_stripe_object(resp.data, opts)
|
||||
|
@ -4,10 +4,31 @@ require ::File.expand_path("../test_helper", __dir__)
|
||||
|
||||
module Stripe
|
||||
class ApiResourceTest < Test::Unit::TestCase
|
||||
class CustomMethodAPIResource < APIResource
|
||||
OBJECT_NAME = "custom_method".freeze
|
||||
custom_method :my_method, http_verb: :post
|
||||
end
|
||||
|
||||
class NestedTestAPIResource < APIResource
|
||||
save_nested_resource :external_account
|
||||
end
|
||||
|
||||
context ".custom_method" do
|
||||
should "call to an RPC-style method" do
|
||||
stub_request(:post, "#{Stripe.api_base}/v1/custom_methods/ch_123/my_method")
|
||||
.to_return(body: JSON.generate({}))
|
||||
CustomMethodAPIResource.my_method("ch_123")
|
||||
end
|
||||
|
||||
should "raise an error if a non-ID is passed" do
|
||||
e = assert_raises ArgumentError do
|
||||
CustomMethodAPIResource.my_method(id: "ch_123")
|
||||
end
|
||||
assert_equal "id should be a string representing the ID of an API resource",
|
||||
e.message
|
||||
end
|
||||
end
|
||||
|
||||
context ".save_nested_resource" do
|
||||
should "can have a scalar set" do
|
||||
r = NestedTestAPIResource.new("test_resource")
|
||||
|
Loading…
x
Reference in New Issue
Block a user