Sha256: c482693203a19190431cccadf7da7713458ba02dfddf05547831c6605ee44f30

Contents?: true

Size: 1.66 KB

Versions: 9

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true

module Stripe
  # The base class for nested TestHelpers classes in resource objects.
  # The APIResourceTestHelpers handles URL generation and custom method
  # support for test-helper methods.
  #
  #  class MyAPIResource < APIResource
  #    class TestHelpers < APIResourceTestHelpers
  class APIResourceTestHelpers
    def initialize(resource)
      @resource = resource
    end

    # Adds a custom method to a test helper. This is used to add support for
    # non-CRUDL API requests, e.g. capturing charges. custom_method takes the
    # following parameters:
    # - name: the name of the custom method to create (as a symbol)
    # - http_verb: the HTTP verb for the API request (:get, :post, or :delete)
    # - http_path: the path to append to the resource's URL. If not provided,
    #              the name is used as the path
    #
    # For example, this call:
    #     custom_method :capture, http_verb: post
    # adds a `capture` class method to the resource class that, when called,
    # will send a POST request to `/v1/<object_name>/capture`.
    def self.custom_method(name, http_verb:, http_path: nil)
      Util.custom_method self::RESOURCE_CLASS, self, name, http_verb, http_path
    end

    def self.resource_url
      "/v1/test_helpers/"\
      "#{self::RESOURCE_CLASS::OBJECT_NAME.downcase.tr('.', '/')}s"
    end

    def resource_url
      unless (id = @resource["id"])
        raise InvalidRequestError.new(
          "Could not determine which URL to request: #{self.class} instance " \
          "has invalid ID: #{id.inspect}",
          "id"
        )
      end
      "#{self.class.resource_url}/#{CGI.escape(id)}"
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
stripe-6.0.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.55.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.54.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.53.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.52.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.50.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.49.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.48.0 lib/stripe/api_resource_test_helpers.rb
stripe-5.47.0 lib/stripe/api_resource_test_helpers.rb