mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-06-02 00:00:35 -04:00
Support transfer reversals
This commit is contained in:
parent
581e6348cc
commit
d1bceb0041
@ -41,6 +41,7 @@ require 'stripe/card'
|
||||
require 'stripe/subscription'
|
||||
require 'stripe/application_fee'
|
||||
require 'stripe/refund'
|
||||
require 'stripe/reversal'
|
||||
require 'stripe/application_fee_refund'
|
||||
require 'stripe/bitcoin_receiver'
|
||||
require 'stripe/bitcoin_transaction'
|
||||
|
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,
|
||||
'file_upload' => FileUpload,
|
||||
'transfer' => Transfer,
|
||||
'transfer_reversal' => Reversal,
|
||||
'bitcoin_receiver' => BitcoinReceiver,
|
||||
'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 "refunds 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 "refunds 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
|
||||
|
||||
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
|
||||
{
|
||||
@ -359,6 +366,7 @@ module Stripe
|
||||
:fee => 0,
|
||||
:fee_details => [],
|
||||
:id => "tr_test_transfer",
|
||||
:reversals => test_reversal_array('tr_test_transfer'),
|
||||
:livemode => false,
|
||||
:currency => "usd",
|
||||
:object => "transfer",
|
||||
@ -381,6 +389,18 @@ module Stripe
|
||||
})
|
||||
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={})
|
||||
{
|
||||
:id => 'btcrcv_test_receiver',
|
||||
|
Loading…
x
Reference in New Issue
Block a user