diff --git a/lib/stripe/resources/terminal/reader.rb b/lib/stripe/resources/terminal/reader.rb index 6ad46f872..9401c0ae2 100644 --- a/lib/stripe/resources/terminal/reader.rb +++ b/lib/stripe/resources/terminal/reader.rb @@ -10,6 +10,66 @@ class Reader < APIResource include Stripe::APIOperations::Save OBJECT_NAME = "terminal.reader" + + custom_method :cancel_action, http_verb: :post + custom_method :process_payment_intent, http_verb: :post + custom_method :process_setup_intent, http_verb: :post + custom_method :set_reader_display, http_verb: :post + + def cancel_action(params = {}, opts = {}) + request_stripe_object( + method: :post, + path: resource_url + "/cancel_action", + params: params, + opts: opts + ) + end + + def process_payment_intent(params = {}, opts = {}) + request_stripe_object( + method: :post, + path: resource_url + "/process_payment_intent", + params: params, + opts: opts + ) + end + + def process_setup_intent(params = {}, opts = {}) + request_stripe_object( + method: :post, + path: resource_url + "/process_setup_intent", + params: params, + opts: opts + ) + end + + def set_reader_display(params = {}, opts = {}) + request_stripe_object( + method: :post, + path: resource_url + "/set_reader_display", + params: params, + opts: opts + ) + end + + def test_helpers + TestHelpers.new(self) + end + + class TestHelpers < APIResourceTestHelpers + RESOURCE_CLASS = Reader + + custom_method :present_payment_method, http_verb: :post + + def present_payment_method(params = {}, opts = {}) + @resource.request_stripe_object( + method: :post, + path: resource_url + "/present_payment_method", + params: params, + opts: opts + ) + end + end end end end diff --git a/test/stripe/terminal/reader_test.rb b/test/stripe/terminal/reader_test.rb index 664368ce1..027804ddc 100644 --- a/test/stripe/terminal/reader_test.rb +++ b/test/stripe/terminal/reader_test.rb @@ -57,6 +57,13 @@ class ReaderTest < Test::Unit::TestCase assert reader.is_a?(Stripe::Terminal::Reader) end end + + should "be able to present a payment method" do + reader = Stripe::Terminal::Reader.retrieve("rdr_123") + reader = reader.test_helpers.present_payment_method + assert_requested :post, "#{Stripe.api_base}/v1/test_helpers/terminal/readers/rdr_123/present_payment_method" + assert reader.is_a?(Stripe::Terminal::Reader) + end end end end