Skip to content

Commit 5ca1a8c

Browse files
author
rpietraszko
committed
[Subscriptions] Add support for collection_method parameter
1 parent 151b52a commit 5ca1a8c

File tree

4 files changed

+7
-2
lines changed

4 files changed

+7
-2
lines changed

lib/stripe_mock/data.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ def self.mock_subscription(params={})
350350
},
351351
cancel_at_period_end: false,
352352
canceled_at: nil,
353+
collection_method: 'charge_automatically',
353354
ended_at: nil,
354355
start: 1308595038,
355356
object: 'subscription',

lib/stripe_mock/request_handlers/helpers/subscription_helpers.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def custom_subscription_params(plans, cus, options = {})
3232
start_time = options[:current_period_start] || now
3333
params = { customer: cus[:id], current_period_start: start_time, created: created_time }
3434
params.merge!({ :plan => (plans.size == 1 ? plans.first : nil) })
35-
keys_to_merge = /application_fee_percent|quantity|metadata|tax_percent|billing|days_until_due|default_tax_rates|pending_invoice_item_interval|default_payment_method/
35+
keys_to_merge = /application_fee_percent|quantity|metadata|tax_percent|billing|days_until_due|default_tax_rates|pending_invoice_item_interval|default_payment_method|collection_method/
3636
params.merge! options.select {|k,v| k =~ keys_to_merge}
3737

3838
if options[:cancel_at_period_end] == true

lib/stripe_mock/request_handlers/subscriptions.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def create_subscription(route, method_url, params, headers)
102102
customer[:default_source] = new_card[:id]
103103
end
104104

105-
allowed_params = %w(customer application_fee_percent coupon items metadata plan quantity source tax_percent trial_end trial_period_days current_period_start created prorate billing_cycle_anchor billing days_until_due idempotency_key enable_incomplete_payments cancel_at_period_end default_tax_rates payment_behavior pending_invoice_item_interval default_payment_method)
105+
allowed_params = %w(customer application_fee_percent coupon items metadata plan quantity source tax_percent trial_end trial_period_days current_period_start created prorate billing_cycle_anchor billing days_until_due idempotency_key enable_incomplete_payments cancel_at_period_end default_tax_rates payment_behavior pending_invoice_item_interval default_payment_method collection_method)
106106
unknown_params = params.keys - allowed_params.map(&:to_sym)
107107
if unknown_params.length > 0
108108
raise Stripe::InvalidRequestError.new("Received unknown parameter: #{unknown_params.join}", unknown_params.first.to_s, http_status: 400)

spec/shared_stripe_examples/subscription_examples.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,14 @@
133133
plan: 'silver',
134134
customer: customer,
135135
metadata: { foo: "bar", example: "yes" },
136+
collection_method: 'send_invoice',
136137
default_payment_method: payment_method.id,
137138
)
138139

139140
subscriptions = Stripe::Subscription.list(customer: customer.id)
140141
expect(subscriptions.count).to eq(1)
141142
expect(subscriptions.data.first.id).to eq(sub.id)
143+
expect(subscriptions.data.first.collection_method).to eq('send_invoice')
142144
expect(subscriptions.data.first.default_payment_method).to eq(payment_method.id)
143145
end
144146

@@ -808,9 +810,11 @@
808810
Stripe::Subscription.update(
809811
subscription.id,
810812
default_payment_method: payment_method_sepa.id,
813+
collection_method: 'send_invoice',
811814
)
812815

813816
subscriptions = Stripe::Subscription.list(customer: customer)
817+
expect(subscriptions.data.first.collection_method).to eq('send_invoice')
814818
expect(subscriptions.data.first.default_payment_method).to eq(payment_method_sepa.id)
815819
end
816820

0 commit comments

Comments
 (0)