Remove Rubocop TODO around guard clauses

Removes Rubocop TODO around guard clauses and fixes the outstanding
offenses.

This is starting to get into territory that feels of more dubious value
to me, but at least it did get me writing a couple more tests, so let's
see how it goes by keeping this on.
This commit is contained in:
Brandur 2017-09-28 09:32:44 -07:00
parent 45101b7b0d
commit cb198baaa3
6 changed files with 51 additions and 34 deletions

View File

@ -65,12 +65,3 @@ Style/ClassVars:
# Offense count: 51
Style/Documentation:
Enabled: false
# Offense count: 5
# Configuration parameters: MinBodyLength.
Style/GuardClause:
Exclude:
- 'lib/stripe/alipay_account.rb'
- 'lib/stripe/source.rb'
- 'lib/stripe/stripe_client.rb'
- 'lib/stripe/stripe_object.rb'

View File

@ -6,9 +6,12 @@ module Stripe
OBJECT_NAME = "alipay_account".freeze
def resource_url
if respond_to?(:customer) && !customer.nil?
"#{Customer.resource_url}/#{CGI.escape(customer)}/sources/#{CGI.escape(id)}"
if !respond_to?(:customer) || customer.nil?
raise NotImplementedError,
"Alipay accounts cannot be accessed without a customer ID."
end
"#{Customer.resource_url}/#{CGI.escape(customer)}/sources/#{CGI.escape(id)}"
end
def self.update(_id, _params = nil, _opts = nil)

View File

@ -6,13 +6,16 @@ module Stripe
OBJECT_NAME = "source".freeze
def delete(params = {}, opts = {})
if respond_to?(:customer) && !customer.nil? && !customer.empty?
url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources/#{CGI.escape(id)}"
resp, opts = request(:delete, url, params, Util.normalize_opts(opts))
initialize_from(resp.data, opts)
else
raise NotImplementedError, "Source objects cannot be deleted, they can only be detached from customer objects. This source object does not appear to be currently attached to a customer object."
if !respond_to?(:customer) || customer.nil? || customer.empty?
raise NotImplementedError,
"Source objects cannot be deleted, they can only be detached " \
"from customer objects. This source object does not appear to " \
"be currently attached to a customer object."
end
url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources/#{CGI.escape(id)}"
resp, opts = request(:delete, url, params, Util.normalize_opts(opts))
initialize_from(resp.data, opts)
end
def verify(params = {}, opts = {})

View File

@ -181,12 +181,12 @@ module Stripe
"if you have any questions."
end
if api_key =~ /\s/
raise AuthenticationError, "Your API key is invalid, as it contains " \
"whitespace. (HINT: You can double-check your API key from the " \
"Stripe web interface. See https://stripe.com/api for details, or " \
"email support@stripe.com if you have any questions.)"
end
return unless api_key =~ /\s/
raise AuthenticationError, "Your API key is invalid, as it contains " \
"whitespace. (HINT: You can double-check your API key from the " \
"Stripe web interface. See https://stripe.com/api for details, or " \
"email support@stripe.com if you have any questions.)"
end
def execute_request_with_rescues(api_base, context)
@ -458,12 +458,13 @@ module Stripe
body: body,
idempotency_key: context.idempotency_key,
request_id: context.request_id)
if context.request_id
Util.log_debug("Dashboard link for request",
idempotency_key: context.idempotency_key,
request_id: context.request_id,
url: Util.request_id_dashboard_url(context.request_id, context.api_key))
end
return unless context.request_id
Util.log_debug("Dashboard link for request",
idempotency_key: context.idempotency_key,
request_id: context.request_id,
url: Util.request_id_dashboard_url(context.request_id, context.api_key))
end
private :log_response

View File

@ -278,11 +278,12 @@ module Stripe
begin
super
rescue NoMethodError => e
if @transient_values.include?(name)
raise NoMethodError, e.message + ". HINT: The '#{name}' attribute was set in the past, however. It was then wiped when refreshing the object with the result returned by Stripe's API, probably as a result of a save(). The attributes currently available on this object are: #{@values.keys.join(', ')}"
else
raise
end
# If we notice the accessed name if our set of transient values we can
# give the user a slightly more helpful error message. If not, just
# raise right away.
raise unless @transient_values.include?(name)
raise NoMethodError, e.message + ". HINT: The '#{name}' attribute was set in the past, however. It was then wiped when refreshing the object with the result returned by Stripe's API, probably as a result of a save(). The attributes currently available on this object are: #{@values.keys.join(', ')}"
end
end

View File

@ -2,6 +2,24 @@ require File.expand_path("../../test_helper", __FILE__)
module Stripe
class AlipayAccountTest < Test::Unit::TestCase
context "#resource_url" do
should "return a resource URL" do
alipay_account = Stripe::AlipayAccount.construct_from(
id: "aliacc_123",
customer: "cus_123"
)
assert_equal "/v1/customers/cus_123/sources/aliacc_123",
alipay_account.resource_url
end
should "raise without a customer" do
alipay_account = Stripe::AlipayAccount.construct_from(id: "aliacc_123")
assert_raises NotImplementedError do
alipay_account.resource_url
end
end
end
should "raise on #retrieve" do
assert_raises NotImplementedError do
Stripe::AlipayAccount.retrieve("aliacc_123")