Skip to content

Commit 565df18

Browse files
committed
Add refund_charge request handler, mock_refund data mock response and "refunds a stripe charge item" shared stripe example spec.
1 parent b4c4271 commit 565df18

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

lib/stripe_mock/data.rb

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,21 @@ def self.mock_charge(params={})
6767
}.merge(params)
6868
end
6969

70+
def self.mock_refund(params={})
71+
mock_charge.merge({
72+
refunded: true,
73+
refunds: [
74+
{
75+
amount: params[:amount],
76+
currency: "usd",
77+
created: 1380208998,
78+
object: "refund",
79+
balance_transaction: "txn_2dyYXXP90MN26R"
80+
}
81+
]
82+
})
83+
end
84+
7085
def self.mock_charge_array
7186
{
7287
:data => [test_charge, test_charge, test_charge],
@@ -312,6 +327,5 @@ def self.mock_delete_discount_response
312327
:id => "di_test_coupon"
313328
}
314329
end
315-
316330
end
317331
end

lib/stripe_mock/request_handlers/charges.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ def Charges.included(klass)
66
klass.add_handler 'post /v1/charges', :new_charge
77
klass.add_handler 'get /v1/charges/(.*)', :get_charge
88
klass.add_handler 'post /v1/charges/(.*)/capture', :capture_charge
9+
klass.add_handler 'post /v1/charges/(.*)/refund', :refund_charge
910
end
1011

1112
def new_charge(route, method_url, params, headers)
@@ -28,6 +29,11 @@ def capture_charge(route, method_url, params, headers)
2829
charge
2930
end
3031

32+
def refund_charge(route, method_url, params, headers)
33+
route =~ method_url
34+
charge = Data.mock_refund(params)
35+
end
36+
3137
end
3238
end
3339
end

spec/shared_stripe_examples/charge_examples.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,18 @@
120120
expect(returned_charge.captured).to be_true
121121
end
122122
end
123+
124+
it "refunds a stripe charge item" do
125+
charge = Stripe::Charge.create(
126+
amount: 999,
127+
currency: 'USD',
128+
card: 'card_token_abcde',
129+
description: 'card charge'
130+
)
131+
132+
charge = charge.refund(amount: 999)
133+
134+
expect(charge.refunded).to eq(true)
135+
expect(charge.refunds.first.amount).to eq(999)
136+
end
123137
end

0 commit comments

Comments
 (0)