mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-12-11 00:02:39 -05:00
Merge pull request #205 from stripe/bk-accounts
Add backwards compat for Accounts & Transfer Reversals
This commit is contained in:
commit
98e7a5ad62
@ -41,6 +41,7 @@ require 'stripe/card'
|
|||||||
require 'stripe/subscription'
|
require 'stripe/subscription'
|
||||||
require 'stripe/application_fee'
|
require 'stripe/application_fee'
|
||||||
require 'stripe/refund'
|
require 'stripe/refund'
|
||||||
|
require 'stripe/reversal'
|
||||||
require 'stripe/application_fee_refund'
|
require 'stripe/application_fee_refund'
|
||||||
require 'stripe/bitcoin_receiver'
|
require 'stripe/bitcoin_receiver'
|
||||||
require 'stripe/bitcoin_transaction'
|
require 'stripe/bitcoin_transaction'
|
||||||
|
|||||||
@ -14,7 +14,15 @@ module Stripe
|
|||||||
|
|
||||||
# @override To make id optional
|
# @override To make id optional
|
||||||
def self.retrieve(id=nil, opts={})
|
def self.retrieve(id=nil, opts={})
|
||||||
super
|
# Account used to be a singleton, where this method's signature was `(opts={})`.
|
||||||
|
# For the sake of not breaking folks who pass in an OAuth key in opts, let's lurkily
|
||||||
|
# string match for it.
|
||||||
|
if opts == {} && id.is_a?(String) && id.start_with?('sk_')
|
||||||
|
# `super` properly assumes a String opts is the apiKey and normalizes as expected.
|
||||||
|
opts = id
|
||||||
|
id = nil
|
||||||
|
end
|
||||||
|
super(id, opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
def deauthorize(client_id, opts={})
|
def deauthorize(client_id, opts={})
|
||||||
|
|||||||
14
lib/stripe/reversal.rb
Normal file
14
lib/stripe/reversal.rb
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
module Stripe
|
||||||
|
class Reversal < APIResource
|
||||||
|
include Stripe::APIOperations::Update
|
||||||
|
include Stripe::APIOperations::List
|
||||||
|
|
||||||
|
def url
|
||||||
|
"#{Transfer.url}/#{CGI.escape(transfer)}/reversals/#{CGI.escape(id)}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.retrieve(id, opts={})
|
||||||
|
raise NotImplementedError.new("Reversals cannot be retrieved without a transfer ID. Retrieve a reversal using transfer.reversals.retrieve('reversal_id')")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -39,6 +39,7 @@ module Stripe
|
|||||||
'subscription' => Subscription,
|
'subscription' => Subscription,
|
||||||
'file_upload' => FileUpload,
|
'file_upload' => FileUpload,
|
||||||
'transfer' => Transfer,
|
'transfer' => Transfer,
|
||||||
|
'transfer_reversal' => Reversal,
|
||||||
'bitcoin_receiver' => BitcoinReceiver,
|
'bitcoin_receiver' => BitcoinReceiver,
|
||||||
'bitcoin_transaction' => BitcoinTransaction
|
'bitcoin_transaction' => BitcoinTransaction
|
||||||
}
|
}
|
||||||
|
|||||||
47
test/stripe/reversal_test.rb
Normal file
47
test/stripe/reversal_test.rb
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
require File.expand_path('../../test_helper', __FILE__)
|
||||||
|
|
||||||
|
module Stripe
|
||||||
|
class ReversalTest < Test::Unit::TestCase
|
||||||
|
should "reversals should be listable" do
|
||||||
|
@mock.expects(:get).once.returns(test_response(test_transfer))
|
||||||
|
|
||||||
|
transfer = Stripe::Transfer.retrieve('test_transfer')
|
||||||
|
|
||||||
|
assert transfer.reversals.first.kind_of?(Stripe::Reversal)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "reversals should be refreshable" do
|
||||||
|
@mock.expects(:get).twice.returns(test_response(test_transfer), test_response(test_reversal(:id => 'refreshed_reversal')))
|
||||||
|
|
||||||
|
transfer = Stripe::Transfer.retrieve('test_transfer')
|
||||||
|
reversal = transfer.reversals.first
|
||||||
|
reversal.refresh
|
||||||
|
|
||||||
|
assert_equal 'refreshed_reversal', reversal.id
|
||||||
|
end
|
||||||
|
|
||||||
|
should "reversals should be updateable" do
|
||||||
|
@mock.expects(:get).once.returns(test_response(test_transfer))
|
||||||
|
@mock.expects(:post).once.returns(test_response(test_reversal(:metadata => {'key' => 'value'})))
|
||||||
|
|
||||||
|
transfer = Stripe::Transfer.retrieve('test_transfer')
|
||||||
|
reversal = transfer.reversals.first
|
||||||
|
|
||||||
|
assert_equal nil, reversal.metadata['key']
|
||||||
|
|
||||||
|
reversal.metadata['key'] = 'value'
|
||||||
|
reversal.save
|
||||||
|
|
||||||
|
assert_equal 'value', reversal.metadata['key']
|
||||||
|
end
|
||||||
|
|
||||||
|
should "create should return a new reversal" do
|
||||||
|
@mock.expects(:get).once.returns(test_response(test_transfer))
|
||||||
|
@mock.expects(:post).once.returns(test_response(test_reversal(:id => 'test_new_reversal')))
|
||||||
|
|
||||||
|
transfer = Stripe::Transfer.retrieve('test_transfer')
|
||||||
|
reversals = transfer.reversals.create(:amount => 20)
|
||||||
|
assert_equal 'test_new_reversal', reversals.id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -254,6 +254,13 @@ module Stripe
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_reversal_array(transfer_id)
|
||||||
|
{
|
||||||
|
:data => [test_reversal, test_reversal, test_reversal],
|
||||||
|
:object => 'list',
|
||||||
|
:url => '/v1/transfers/' + transfer_id + '/reversals'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def test_invoice
|
def test_invoice
|
||||||
{
|
{
|
||||||
@ -359,6 +366,7 @@ module Stripe
|
|||||||
:fee => 0,
|
:fee => 0,
|
||||||
:fee_details => [],
|
:fee_details => [],
|
||||||
:id => "tr_test_transfer",
|
:id => "tr_test_transfer",
|
||||||
|
:reversals => test_reversal_array('tr_test_transfer'),
|
||||||
:livemode => false,
|
:livemode => false,
|
||||||
:currency => "usd",
|
:currency => "usd",
|
||||||
:object => "transfer",
|
:object => "transfer",
|
||||||
@ -381,6 +389,18 @@ module Stripe
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_reversal(params={})
|
||||||
|
{
|
||||||
|
:object => 'transfer_reversal',
|
||||||
|
:amount => 30,
|
||||||
|
:currency => "usd",
|
||||||
|
:created => 1308595038,
|
||||||
|
:id => "ref_test_reversal",
|
||||||
|
:transfer => "tr_test_transfer",
|
||||||
|
:metadata => {}
|
||||||
|
}.merge(params)
|
||||||
|
end
|
||||||
|
|
||||||
def test_bitcoin_receiver(params={})
|
def test_bitcoin_receiver(params={})
|
||||||
{
|
{
|
||||||
:id => 'btcrcv_test_receiver',
|
:id => 'btcrcv_test_receiver',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user