stripe-ruby-mock 3.0.1 → 3.1.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +2 -5
- data/CHANGELOG.md +28 -15
- data/Gemfile +1 -0
- data/lib/stripe_mock.rb +4 -0
- data/lib/stripe_mock/api/client.rb +1 -1
- data/lib/stripe_mock/api/instance.rb +1 -1
- data/lib/stripe_mock/api/webhooks.rb +2 -0
- data/lib/stripe_mock/client.rb +2 -1
- data/lib/stripe_mock/data.rb +127 -25
- data/lib/stripe_mock/data/list.rb +31 -6
- data/lib/stripe_mock/instance.rb +7 -2
- data/lib/stripe_mock/request_handlers/account_links.rb +15 -0
- data/lib/stripe_mock/request_handlers/charges.rb +6 -4
- data/lib/stripe_mock/request_handlers/checkout_session.rb +16 -0
- data/lib/stripe_mock/request_handlers/customers.rb +22 -13
- data/lib/stripe_mock/request_handlers/ephemeral_key.rb +1 -1
- data/lib/stripe_mock/request_handlers/express_login_links.rb +15 -0
- data/lib/stripe_mock/request_handlers/helpers/subscription_helpers.rb +12 -7
- data/lib/stripe_mock/request_handlers/invoices.rb +4 -3
- data/lib/stripe_mock/request_handlers/payment_methods.rb +8 -5
- data/lib/stripe_mock/request_handlers/prices.rb +44 -0
- data/lib/stripe_mock/request_handlers/sources.rb +12 -6
- data/lib/stripe_mock/request_handlers/subscriptions.rb +29 -19
- data/lib/stripe_mock/request_handlers/tokens.rb +6 -4
- data/lib/stripe_mock/request_handlers/validators/param_validators.rb +32 -0
- data/lib/stripe_mock/test_strategies/base.rb +26 -0
- data/lib/stripe_mock/version.rb +1 -1
- data/lib/stripe_mock/webhook_fixtures/balance.available.json +6 -0
- data/lib/stripe_mock/webhook_fixtures/payment_intent.payment_failed.json +186 -0
- data/lib/stripe_mock/webhook_fixtures/payment_intent.succeeded.json +164 -0
- data/spec/instance_spec.rb +4 -6
- data/spec/list_spec.rb +23 -0
- data/spec/server_spec.rb +4 -2
- data/spec/shared_stripe_examples/account_link_examples.rb +16 -0
- data/spec/shared_stripe_examples/balance_examples.rb +6 -0
- data/spec/shared_stripe_examples/card_token_examples.rb +17 -21
- data/spec/shared_stripe_examples/checkout_examples.rb +20 -1
- data/spec/shared_stripe_examples/customer_examples.rb +11 -13
- data/spec/shared_stripe_examples/express_login_link_examples.rb +12 -0
- data/spec/shared_stripe_examples/invoice_examples.rb +8 -8
- data/spec/shared_stripe_examples/payment_method_examples.rb +332 -68
- data/spec/shared_stripe_examples/price_examples.rb +183 -0
- data/spec/shared_stripe_examples/subscription_examples.rb +115 -8
- data/spec/spec_helper.rb +4 -0
- data/spec/stripe_mock_spec.rb +2 -2
- data/spec/support/stripe_examples.rb +5 -1
- data/stripe-ruby-mock.gemspec +6 -1
- metadata +25 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e44063ad0593364e5b9a85f514113c0dd8222e95440410ff9989545e2b947f08
|
4
|
+
data.tar.gz: 3bb136ecba532f8e6e8078b5eba0c8877876d6cf9a0f9c66cb311fd8271e9242
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36e31f008894062f3678c14158436b50a72699977d14c9419e36b53ca4c22d68d3f2bc5f72fac39abb0adcd01121ae3223b43cc71bc79c54159fcba343131d3e
|
7
|
+
data.tar.gz: a49ae0d98ffa6560dac087acfeff75ea041c8d63a1703b7e72214321362208ef4b38ef9411f5698022c2fdc1003345e21f1c10e02309a93ce624fbb67f7108e6
|
data/.travis.yml
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
dist: trusty
|
2
|
-
group: deprecated-2017Q2
|
3
1
|
sudo: required
|
4
2
|
language: ruby
|
5
3
|
rvm:
|
6
4
|
- 2.4.6
|
7
5
|
- 2.5.5
|
8
6
|
- 2.6.3
|
7
|
+
- 2.7.0
|
9
8
|
before_install:
|
10
|
-
- rvm 2.1.10 do gem install mime-types -v 2.6.2
|
11
9
|
- gem install bundler -v '< 2'
|
12
10
|
before_script:
|
13
11
|
- "sudo touch /var/log/stripe-mock-server.log"
|
@@ -16,7 +14,7 @@ script: "bundle exec rspec && bundle exec rspec -t live"
|
|
16
14
|
|
17
15
|
env:
|
18
16
|
global:
|
19
|
-
- IS_TRAVIS=true STRIPE_TEST_SECRET_KEY_A=sk_test_BsztzqQjzd7lqkgo1LjEG5DF00KzH7tWKF STRIPE_TEST_SECRET_KEY_B=sk_test_rKCEu0x8jzg6cKPqoey8kUPQ00usQO3KYE STRIPE_TEST_SECRET_KEY_C=sk_test_qeaB7R6Ywp8sC9pzd1ZIABH700YLC7nhmZ
|
17
|
+
- IS_TRAVIS=true STRIPE_TEST_SECRET_KEY_A=sk_test_BsztzqQjzd7lqkgo1LjEG5DF00KzH7tWKF STRIPE_TEST_SECRET_KEY_B=sk_test_rKCEu0x8jzg6cKPqoey8kUPQ00usQO3KYE STRIPE_TEST_SECRET_KEY_C=sk_test_qeaB7R6Ywp8sC9pzd1ZIABH700YLC7nhmZ STRIPE_TEST_SECRET_KEY_D=sk_test_r1NwHkUW7UyoozyP4aEBD6cs00CI5uDiGq
|
20
18
|
|
21
19
|
notifications:
|
22
20
|
webhooks:
|
@@ -25,4 +23,3 @@ notifications:
|
|
25
23
|
on_success: change # options: [always|never|change] default: always
|
26
24
|
on_failure: always # options: [always|never|change] default: always
|
27
25
|
on_start: false # default: false
|
28
|
-
|
data/CHANGELOG.md
CHANGED
@@ -1,22 +1,35 @@
|
|
1
|
-
### 3.0.
|
1
|
+
### 3.1.0.rc2 (pre-release 2021-03-03)
|
2
2
|
|
3
|
-
|
3
|
+
- [#767](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/767): Fixes tests and more [@lpsBetty](https://github.com/lpsBetty)
|
4
|
+
|
5
|
+
### 3.1.0.rc1 (pre-release 2021-02-17)
|
6
|
+
|
7
|
+
- [#765](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/765): Properly set the status of a trialing subscription. [@csalvato](https://github.com/csalvato)
|
8
|
+
- [#764](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/764): Fixes erroneous error message when fetching upcoming invoices. [@csalvato](https://github.com/csalvato)
|
9
|
+
- [#762](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/762): Support Stripe Connect with Customers by adding stripe_account header namespace for customer object [@csalvato](https://github.com/csalvato)
|
10
|
+
- [#755](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/755): Add allowed params to subscriptions [@dominikdarnel ](https://github.com/dominikdarnel)
|
11
|
+
- [#748](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/758): Support Prices - [@hidenba](https://github.com/hidenba) and [@jamesprior](https://github.com/jamesprior).
|
12
|
+
- [#747](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/747/files): Fix ruby 2.7 deprecation warnings. Adds Ruby 3.0.0 compatibility. [@coding-chimp](https://github.com/coding-chimp)
|
13
|
+
- [#715](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/715): Added application_fee_amount to mock charge object - [@espen](https://github.com/espen)
|
14
|
+
- [#709](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/709): Remove unnecessary check on customer's currency - [@coorasse](https://github.com/coorasse)
|
4
15
|
|
5
16
|
### 3.0.1 (TBD)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
|
18
|
+
- Added Changelog file
|
19
|
+
- [#640](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/640): Support Payment Intent status requires_capture - [@theodorton](https://github.com/theodorton).
|
20
|
+
- [#685](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/685): Adds support for pending_invoice_item_interval - [@joshcass](https://github.com/joshcass).
|
21
|
+
- [#682](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/682): Prevent customer metadata from being overwritten with each update - [@sethkrasnianski](https://github.com/sethkrasnianski).
|
22
|
+
- [#679](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/679): Fix for [#678](https://github.com/stripe-ruby-mock/stripe-ruby-mock/issues/678) Add active filter to Data::List - [@rnmp](https://github.com/rnmp).
|
23
|
+
- [#668](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/668): Fix for [#665](https://github.com/stripe-ruby-mock/stripe-ruby-mock/issues/665) Allow to remove discount from customer - [@mnin](https://github.com/mnin).
|
24
|
+
- [#667](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/667):
|
25
|
+
Remove empty and duplicated methods from payment methods - [@mnin](https://github.com/mnin).
|
26
|
+
- [#664](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/664): Bugfix: pass through PaymentIntent amount to mocked Charge - [@typeoneerror](https://github.com/typeoneerror).
|
27
|
+
- [#654](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/654): fix for [#626](https://github.com/stripe-ruby-mock/stripe-ruby-mock/issues/626) Added missing decline codes - [@iCreateJB](https://github.com/iCreateJB).
|
28
|
+
- [#648](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/648): Initial implementation of checkout session API - [@fauxparse](https://github.com/fauxparse).
|
29
|
+
- [#644](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/644): Allow payment_behavior attribute on subscription create - [@j15e](https://github.com/j15e).
|
18
30
|
|
19
31
|
### 3.0.0 (2019-12-17)
|
20
32
|
|
21
33
|
##### the main thing is:
|
22
|
-
|
34
|
+
|
35
|
+
- [#658](https://github.com/stripe-ruby-mock/stripe-ruby-mock/pull/658) Make the gem compatible with Stripe Gem v.5
|
data/Gemfile
CHANGED
data/lib/stripe_mock.rb
CHANGED
@@ -47,6 +47,8 @@ require 'stripe_mock/request_handlers/helpers/token_helpers.rb'
|
|
47
47
|
|
48
48
|
require 'stripe_mock/request_handlers/validators/param_validators.rb'
|
49
49
|
|
50
|
+
require 'stripe_mock/request_handlers/account_links.rb'
|
51
|
+
require 'stripe_mock/request_handlers/express_login_links.rb'
|
50
52
|
require 'stripe_mock/request_handlers/accounts.rb'
|
51
53
|
require 'stripe_mock/request_handlers/external_accounts.rb'
|
52
54
|
require 'stripe_mock/request_handlers/balance.rb'
|
@@ -62,6 +64,7 @@ require 'stripe_mock/request_handlers/invoices.rb'
|
|
62
64
|
require 'stripe_mock/request_handlers/invoice_items.rb'
|
63
65
|
require 'stripe_mock/request_handlers/orders.rb'
|
64
66
|
require 'stripe_mock/request_handlers/plans.rb'
|
67
|
+
require 'stripe_mock/request_handlers/prices.rb'
|
65
68
|
require 'stripe_mock/request_handlers/recipients.rb'
|
66
69
|
require 'stripe_mock/request_handlers/refunds.rb'
|
67
70
|
require 'stripe_mock/request_handlers/transfers.rb'
|
@@ -77,6 +80,7 @@ require 'stripe_mock/request_handlers/ephemeral_key.rb'
|
|
77
80
|
require 'stripe_mock/request_handlers/products.rb'
|
78
81
|
require 'stripe_mock/request_handlers/tax_rates.rb'
|
79
82
|
require 'stripe_mock/request_handlers/checkout.rb'
|
83
|
+
require 'stripe_mock/request_handlers/checkout_session.rb'
|
80
84
|
require 'stripe_mock/instance'
|
81
85
|
|
82
86
|
require 'stripe_mock/test_strategies/base.rb'
|
@@ -8,7 +8,7 @@ module StripeMock
|
|
8
8
|
return false if @state == 'live'
|
9
9
|
return @client unless @client.nil?
|
10
10
|
|
11
|
-
Stripe::StripeClient.send(:define_method, :execute_request) { |*args| StripeMock.redirect_to_mock_server(*args) }
|
11
|
+
Stripe::StripeClient.send(:define_method, :execute_request) { |*args, **keyword_args| StripeMock.redirect_to_mock_server(*args, **keyword_args) }
|
12
12
|
@client = StripeMock::Client.new(port)
|
13
13
|
@state = 'remote'
|
14
14
|
@client
|
@@ -7,7 +7,7 @@ module StripeMock
|
|
7
7
|
def self.start
|
8
8
|
return false if @state == 'live'
|
9
9
|
@instance = instance = Instance.new
|
10
|
-
Stripe::StripeClient.send(:define_method, :execute_request) { |*args| instance.mock_request(*args) }
|
10
|
+
Stripe::StripeClient.send(:define_method, :execute_request) { |*args, **keyword_args| instance.mock_request(*args, **keyword_args) }
|
11
11
|
@state = 'local'
|
12
12
|
end
|
13
13
|
|
data/lib/stripe_mock/client.rb
CHANGED
@@ -18,7 +18,8 @@ module StripeMock
|
|
18
18
|
@pipe.mock_request(method, url, api_key: api_key, params: params, headers: headers).tap {|result|
|
19
19
|
response, api_key = result
|
20
20
|
if response.is_a?(Hash) && response[:error_raised] == 'invalid_request'
|
21
|
-
|
21
|
+
args, keyword_args = response[:error_params].first(2), response[:error_params].last
|
22
|
+
raise Stripe::InvalidRequestError.new(*args, **keyword_args)
|
22
23
|
end
|
23
24
|
}
|
24
25
|
end
|
data/lib/stripe_mock/data.rb
CHANGED
@@ -101,6 +101,27 @@ module StripeMock
|
|
101
101
|
}.merge(params)
|
102
102
|
end
|
103
103
|
|
104
|
+
def self.mock_account_link(params = {})
|
105
|
+
now = Time.now.to_i
|
106
|
+
{
|
107
|
+
object: 'account_link',
|
108
|
+
created: now,
|
109
|
+
expires_at: now + 300,
|
110
|
+
url: 'https://connect.stripe.com/setup/c/iB0ph1cPnRLY',
|
111
|
+
data: {}
|
112
|
+
}.merge(params)
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.mock_express_login_link(params = {})
|
116
|
+
now = Time.now.to_i
|
117
|
+
{
|
118
|
+
object: 'login_link',
|
119
|
+
created: now,
|
120
|
+
url: 'https://connect.stripe.com/express/Ln7FfnNpUcCU',
|
121
|
+
data: {}
|
122
|
+
}.merge(params)
|
123
|
+
end
|
124
|
+
|
104
125
|
def self.mock_tax_rate(params)
|
105
126
|
{
|
106
127
|
id: 'test_cus_default',
|
@@ -119,7 +140,7 @@ module StripeMock
|
|
119
140
|
|
120
141
|
def self.mock_customer(sources, params)
|
121
142
|
cus_id = params[:id] || "test_cus_default"
|
122
|
-
currency = params[:currency]
|
143
|
+
currency = params[:currency]
|
123
144
|
sources.each {|source| source[:customer] = cus_id}
|
124
145
|
{
|
125
146
|
email: 'stripe_mock@example.com',
|
@@ -142,12 +163,14 @@ module StripeMock
|
|
142
163
|
sources: {
|
143
164
|
object: "list",
|
144
165
|
total_count: sources.size,
|
166
|
+
has_more: false,
|
145
167
|
url: "/v1/customers/#{cus_id}/sources",
|
146
168
|
data: sources
|
147
169
|
},
|
148
170
|
subscriptions: {
|
149
171
|
object: "list",
|
150
172
|
total_count: 0,
|
173
|
+
has_more: false,
|
151
174
|
url: "/v1/customers/#{cus_id}/subscriptions",
|
152
175
|
data: []
|
153
176
|
},
|
@@ -166,6 +189,7 @@ module StripeMock
|
|
166
189
|
paid: true,
|
167
190
|
amount: 0,
|
168
191
|
application_fee: nil,
|
192
|
+
application_fee_amount: nil,
|
169
193
|
currency: currency,
|
170
194
|
destination: nil,
|
171
195
|
fraud_details: {},
|
@@ -339,6 +363,7 @@ module StripeMock
|
|
339
363
|
},
|
340
364
|
cancel_at_period_end: false,
|
341
365
|
canceled_at: nil,
|
366
|
+
collection_method: 'charge_automatically',
|
342
367
|
ended_at: nil,
|
343
368
|
start: 1308595038,
|
344
369
|
object: 'subscription',
|
@@ -350,8 +375,10 @@ module StripeMock
|
|
350
375
|
discount: nil,
|
351
376
|
metadata: {},
|
352
377
|
default_tax_rates: nil,
|
378
|
+
default_payment_method: nil,
|
353
379
|
pending_invoice_item_interval: nil,
|
354
|
-
next_pending_invoice_item_invoice: nil
|
380
|
+
next_pending_invoice_item_invoice: nil,
|
381
|
+
latest_invoice: nil
|
355
382
|
}, params)
|
356
383
|
end
|
357
384
|
|
@@ -371,6 +398,7 @@ module StripeMock
|
|
371
398
|
lines: {
|
372
399
|
object: "list",
|
373
400
|
total_count: lines.count,
|
401
|
+
has_more: false,
|
374
402
|
url: "/v1/invoices/#{in_id}/lines",
|
375
403
|
data: lines
|
376
404
|
},
|
@@ -554,6 +582,34 @@ module StripeMock
|
|
554
582
|
}.merge(params)
|
555
583
|
end
|
556
584
|
|
585
|
+
def self.mock_price(params={})
|
586
|
+
currency = params[:currency] || StripeMock.default_currency
|
587
|
+
{
|
588
|
+
id: "mock_price_123",
|
589
|
+
object: "price",
|
590
|
+
active: true,
|
591
|
+
billing_scheme: "per_unit",
|
592
|
+
created: 1593044959,
|
593
|
+
currency: currency,
|
594
|
+
livemode: false,
|
595
|
+
lookup_key: nil,
|
596
|
+
metadata: {},
|
597
|
+
nickname: 'My Mock Price',
|
598
|
+
product: "mock_prod_NONEXIST", # override this with your own existing product id
|
599
|
+
recurring: {
|
600
|
+
aggregate_usage: nil,
|
601
|
+
interval: "month",
|
602
|
+
interval_count: 1,
|
603
|
+
usage_type: "licensed"
|
604
|
+
},
|
605
|
+
tiers_mode: nil,
|
606
|
+
transform_quantity: nil,
|
607
|
+
type: "recurring",
|
608
|
+
unit_amount: 2000,
|
609
|
+
unit_amount_decimal: "2000"
|
610
|
+
}.merge(params)
|
611
|
+
end
|
612
|
+
|
557
613
|
def self.mock_product(params={})
|
558
614
|
{
|
559
615
|
id: "mock_prod_abc123",
|
@@ -601,6 +657,7 @@ module StripeMock
|
|
601
657
|
object: "list",
|
602
658
|
url: "/v1/recipients/#{rp_id}/cards",
|
603
659
|
data: cards,
|
660
|
+
has_more: false,
|
604
661
|
total_count: cards.count
|
605
662
|
},
|
606
663
|
default_card: nil
|
@@ -1008,6 +1065,16 @@ module StripeMock
|
|
1008
1065
|
bitcoin_receiver: 1545182
|
1009
1066
|
}
|
1010
1067
|
}],
|
1068
|
+
instant_available: [
|
1069
|
+
{
|
1070
|
+
currency: "usd",
|
1071
|
+
amount: usd_balance,
|
1072
|
+
source_types: {
|
1073
|
+
card: 25907032203,
|
1074
|
+
bank_account: 108476658,
|
1075
|
+
bitcoin_receiver: 1545182
|
1076
|
+
}
|
1077
|
+
}],
|
1011
1078
|
connect_reserved: [
|
1012
1079
|
{
|
1013
1080
|
currency: "usd",
|
@@ -1072,9 +1139,9 @@ module StripeMock
|
|
1072
1139
|
end
|
1073
1140
|
|
1074
1141
|
def self.mock_subscription_item(params = {})
|
1075
|
-
|
1142
|
+
id = params[:id] || 'test_si_default'
|
1076
1143
|
{
|
1077
|
-
id:
|
1144
|
+
id: id,
|
1078
1145
|
object: 'subscription_item',
|
1079
1146
|
created: 1504716183,
|
1080
1147
|
metadata: {
|
@@ -1167,29 +1234,64 @@ module StripeMock
|
|
1167
1234
|
end
|
1168
1235
|
|
1169
1236
|
def self.mock_payment_method(params = {})
|
1170
|
-
payment_method_id = params[:id] ||
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
exp_month: 2,
|
1181
|
-
exp_year: 2022,
|
1182
|
-
fingerprint: "Hr3Ly5z5IYxsokWA",
|
1183
|
-
funding: "credit",
|
1184
|
-
last4: "3155",
|
1185
|
-
three_d_secure_usage: { supported: true }
|
1237
|
+
payment_method_id = params[:id] || 'pm_1ExEuFL2DI6wht39WNJgbybl'
|
1238
|
+
|
1239
|
+
type = params[:type].to_sym
|
1240
|
+
data = {
|
1241
|
+
card: {
|
1242
|
+
brand: 'visa',
|
1243
|
+
checks: {
|
1244
|
+
address_line1_check: nil,
|
1245
|
+
address_postal_code_check: nil,
|
1246
|
+
cvc_check: 'pass'
|
1186
1247
|
},
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1248
|
+
country: 'FR',
|
1249
|
+
exp_month: 2,
|
1250
|
+
exp_year: 2022,
|
1251
|
+
fingerprint: 'Hr3Ly5z5IYxsokWA',
|
1252
|
+
funding: 'credit',
|
1253
|
+
generated_from: nil,
|
1254
|
+
last4: '3155',
|
1255
|
+
three_d_secure_usage: { supported: true },
|
1256
|
+
wallet: nil
|
1257
|
+
},
|
1258
|
+
ideal: {
|
1259
|
+
bank: 'ing',
|
1260
|
+
bic: 'INGBNL2A',
|
1261
|
+
iban_last4: '****',
|
1262
|
+
verified_name: 'JENNY ROSEN'
|
1263
|
+
},
|
1264
|
+
sepa_debit: {
|
1265
|
+
bank_code: '37040044',
|
1266
|
+
branch_code: '',
|
1267
|
+
country: 'DE',
|
1268
|
+
fingerprint: 'FD81kbVPe7M05BMj',
|
1269
|
+
last4: '3000'
|
1270
|
+
}
|
1271
|
+
}
|
1191
1272
|
|
1192
|
-
|
1273
|
+
{
|
1274
|
+
id: payment_method_id,
|
1275
|
+
object: 'payment_method',
|
1276
|
+
type: params[:type],
|
1277
|
+
billing_details: {
|
1278
|
+
address: {
|
1279
|
+
city: 'New Orleans',
|
1280
|
+
country: 'US',
|
1281
|
+
line1: 'Bourbon Street 23',
|
1282
|
+
line2: nil,
|
1283
|
+
postal_code: '10000',
|
1284
|
+
state: nil
|
1285
|
+
},
|
1286
|
+
email: 'foo@bar.com',
|
1287
|
+
name: 'John Dolton',
|
1288
|
+
phone: nil
|
1289
|
+
},
|
1290
|
+
customer: params[:customer] || nil,
|
1291
|
+
metadata: {
|
1292
|
+
order_id: '123456789'
|
1293
|
+
}
|
1294
|
+
}.merge(type => data[type]).merge(params)
|
1193
1295
|
end
|
1194
1296
|
|
1195
1297
|
def self.mock_setup_intent(params = {})
|
@@ -9,12 +9,9 @@ module StripeMock
|
|
9
9
|
@starting_after = options[:starting_after]
|
10
10
|
@ending_before = options[:ending_before]
|
11
11
|
@active = options[:active]
|
12
|
-
if
|
13
|
-
|
14
|
-
|
15
|
-
elsif @data.first.respond_to?(:created)
|
16
|
-
@data.sort_by { |x| x.created }
|
17
|
-
@data.reverse!
|
12
|
+
if contains_stripe_objects?
|
13
|
+
prune_deleted_data
|
14
|
+
sort_data
|
18
15
|
end
|
19
16
|
end
|
20
17
|
|
@@ -76,6 +73,34 @@ module StripeMock
|
|
76
73
|
"#{first_object.class.to_s.split('::')[-1].downcase}s"
|
77
74
|
end
|
78
75
|
end
|
76
|
+
|
77
|
+
def contains_stripe_objects?
|
78
|
+
return false if data.empty?
|
79
|
+
|
80
|
+
object = data.first
|
81
|
+
object.is_a?(Stripe::StripeObject) || (
|
82
|
+
object.is_a?(Hash) && [:created, :deleted].any? { |k| object.key?(k) }
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
def prune_deleted_data
|
87
|
+
data.reject! do |object|
|
88
|
+
(object.is_a?(Hash) && object[:deleted]) ||
|
89
|
+
(object.is_a?(Stripe::StripeObject) && object.deleted?)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def sort_data
|
94
|
+
# Reverse must follow sort to preserve existing test dependencies. The
|
95
|
+
# alternative would be to simply reverse lhs and rhs in the comparison,
|
96
|
+
# however, being a stable sort this breaks the existing dependency when
|
97
|
+
# more than one record share the same `created` value.
|
98
|
+
@data = data.sort { |lhs, rhs| sort_val(lhs) <=> sort_val(rhs) }.reverse
|
99
|
+
end
|
100
|
+
|
101
|
+
def sort_val(object)
|
102
|
+
object.is_a?(Stripe::StripeObject) ? object.created : object[:created]
|
103
|
+
end
|
79
104
|
end
|
80
105
|
end
|
81
106
|
end
|