Skip to content

Commit a370665

Browse files
Merge pull request stripe-ruby-mock#538 from pwim/overwrite-default-currency
Allow overwriting of the default currency
2 parents c7508b1 + 44cc06e commit a370665

File tree

5 files changed

+37
-20
lines changed

5 files changed

+37
-20
lines changed

lib/stripe_mock.rb

+2
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,13 @@
7474

7575
module StripeMock
7676

77+
@default_currency = 'usd'
7778
lib_dir = File.expand_path(File.dirname(__FILE__), '../..')
7879
@webhook_fixture_path = './spec/fixtures/stripe_webhooks/'
7980
@webhook_fixture_fallback_path = File.join(lib_dir, 'stripe_mock/webhook_fixtures')
8081

8182
class << self
83+
attr_accessor :default_currency
8284
attr_accessor :webhook_fixture_path
8385
end
8486
end

lib/stripe_mock/data.rb

+16-15
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module Data
33

44
def self.mock_account(params = {})
55
id = params[:id] || 'acct_103ED82ePvKYlo2C'
6-
currency = params[:currency] || 'usd'
6+
currency = params[:currency] || StripeMock.default_currency
77
{
88
id: id,
99
@@ -103,7 +103,8 @@ def self.mock_account(params = {})
103103

104104
def self.mock_customer(sources, params)
105105
cus_id = params[:id] || "test_cus_default"
106-
currency = params[:currency] || 'usd'
106+
puts @default_currency
107+
currency = params[:currency] || StripeMock.default_currency
107108
sources.each {|source| source[:customer] = cus_id}
108109
{
109110
@@ -134,7 +135,7 @@ def self.mock_customer(sources, params)
134135

135136
def self.mock_charge(params={})
136137
charge_id = params[:id] || "ch_1fD6uiR9FAA2zc"
137-
currency = params[:currency] || 'usd'
138+
currency = params[:currency] || StripeMock.default_currency
138139
{
139140
id: charge_id,
140141
object: "charge",
@@ -196,7 +197,7 @@ def self.mock_charge(params={})
196197
end
197198

198199
def self.mock_refund(params={})
199-
currency = params[:currency] || 'usd'
200+
currency = params[:currency] || StripeMock.default_currency
200201
{
201202
id: "re_4fWhgUh5si7InF",
202203
amount: 1,
@@ -248,7 +249,7 @@ def self.mock_card(params={})
248249
end
249250

250251
def self.mock_bank_account(params={})
251-
currency = params[:currency] || 'usd'
252+
currency = params[:currency] || StripeMock.default_currency
252253
{
253254
id: "test_ba_default",
254255
object: "bank_account",
@@ -306,7 +307,7 @@ def self.mock_subscription(params={})
306307
plan: {
307308
amount: 999,
308309
created: 1504035972,
309-
currency: 'usd'
310+
currency: StripeMock.default_currency
310311
},
311312
quantity: 1
312313
}]
@@ -328,7 +329,7 @@ def self.mock_subscription(params={})
328329

329330
def self.mock_invoice(lines, params={})
330331
in_id = params[:id] || "test_in_default"
331-
currency = params[:currency] || 'usd'
332+
currency = params[:currency] || StripeMock.default_currency
332333
lines << Data.mock_line_item() if lines.empty?
333334
invoice = {
334335
id: 'in_test_invoice',
@@ -379,7 +380,7 @@ def self.mock_invoice(lines, params={})
379380
end
380381

381382
def self.mock_line_item(params = {})
382-
currency = params[:currency] || 'usd'
383+
currency = params[:currency] || StripeMock.default_currency
383384
{
384385
id: "ii_test",
385386
object: "line_item",
@@ -402,7 +403,7 @@ def self.mock_line_item(params = {})
402403
end
403404

404405
def self.mock_invoice_item(params = {})
405-
currency = params[:currency] || 'usd'
406+
currency = params[:currency] || StripeMock.default_currency
406407
{
407408
id: "test_ii",
408409
object: "invoiceitem",
@@ -490,7 +491,7 @@ def self.mock_order_item(params={})
490491
end
491492

492493
def self.mock_plan(params={})
493-
currency = params[:currency] || 'usd'
494+
currency = params[:currency] || StripeMock.default_currency
494495
{
495496
id: "2",
496497
object: "plan",
@@ -591,7 +592,7 @@ def self.mock_bank_account_token(params={})
591592
end
592593

593594
def self.mock_transfer(params={})
594-
currency = params[:currency] || 'usd'
595+
currency = params[:currency] || StripeMock.default_currency
595596
id = params[:id] || 'tr_test_transfer'
596597
{
597598
:status => 'pending',
@@ -623,7 +624,7 @@ def self.mock_transfer(params={})
623624
end
624625

625626
def self.mock_payout(params={})
626-
currency = params[:currency] || 'usd'
627+
currency = params[:currency] || StripeMock.default_currency
627628
id = params[:id] || 'po_test_payout'
628629
{
629630
:amount => 100,
@@ -647,7 +648,7 @@ def self.mock_disputes(ids=[])
647648

648649
def self.mock_dispute(params={})
649650
@timestamp ||= Time.now.to_i
650-
currency = params[:currency] || 'usd'
651+
currency = params[:currency] || StripeMock.default_currency
651652
id = params[:id] || "dp_test_dispute"
652653
{
653654
:id => id,
@@ -967,7 +968,7 @@ def self.mock_balance_transactions(ids=[])
967968
end
968969

969970
def self.mock_balance_transaction(params = {})
970-
currency = params[:currency] || 'usd'
971+
currency = params[:currency] || StripeMock.default_currency
971972
bt_id = params[:id] || 'test_txn_default'
972973
source = params[:source] || 'ch_test_charge'
973974
{
@@ -1015,7 +1016,7 @@ def self.mock_subscription_item(params = {})
10151016
object: 'plan',
10161017
amount: 1337,
10171018
created: 1504716177,
1018-
currency: 'usd',
1019+
currency: StripeMock.default_currency,
10191020
interval: 'month',
10201021
interval_count: 1,
10211022
livemode: false,

lib/stripe_mock/request_handlers/invoices.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,9 @@ def get_mock_subscription_line_item(subscription)
166166
#anonymous charge
167167
def invoice_charge(invoice)
168168
begin
169-
new_charge(nil, nil, {customer: invoice[:customer]["id"], amount: invoice[:amount_due], currency: 'usd'}, nil)
169+
new_charge(nil, nil, {customer: invoice[:customer]["id"], amount: invoice[:amount_due], currency: StripeMock.default_currency}, nil)
170170
rescue Stripe::InvalidRequestError
171-
new_charge(nil, nil, {source: generate_card_token, amount: invoice[:amount_due], currency: 'usd'}, nil)
171+
new_charge(nil, nil, {source: generate_card_token, amount: invoice[:amount_due], currency: StripeMock.default_currency}, nil)
172172
end
173173
end
174174

lib/stripe_mock/test_strategies/base.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module TestStrategies
33
class Base
44

55
def create_plan_params(params={})
6-
currency = params[:currency] || 'usd'
6+
currency = params[:currency] || StripeMock.default_currency
77
{
88
:id => 'stripe_mock_default_plan_id',
99
:name => 'StripeMock Default Plan ID',
@@ -23,7 +23,7 @@ def generate_card_token(card_params={})
2323
end
2424

2525
def generate_bank_token(bank_account_params={})
26-
currency = bank_account_params[:currency] || 'usd'
26+
currency = bank_account_params[:currency] || StripeMock.default_currency
2727
bank_account = {
2828
:country => "US",
2929
:currency => currency,
@@ -39,7 +39,7 @@ def generate_bank_token(bank_account_params={})
3939
end
4040

4141
def create_coupon_params(params = {})
42-
currency = params[:currency] || 'usd'
42+
currency = params[:currency] || StripeMock.default_currency
4343
{
4444
id: '10BUCKS',
4545
amount_off: 1000,

spec/instance_spec.rb

+14
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,18 @@ def test_data_source(type); StripeMock.instance.send(type); end
5252
StripeMock.set_conversion_rate(1.25)
5353
expect(StripeMock.instance.conversion_rate).to eq(1.25)
5454
end
55+
56+
it "allows non-usd default currency" do
57+
old_default_currency = StripeMock.default_currency
58+
customer = begin
59+
StripeMock.default_currency = "jpy"
60+
Stripe::Customer.create({
61+
62+
source: stripe_helper.generate_card_token
63+
})
64+
ensure
65+
StripeMock.default_currency = old_default_currency
66+
end
67+
expect(customer.currency).to eq("jpy")
68+
end
5569
end

0 commit comments

Comments
 (0)