Skip to content

Commit aefc082

Browse files
authored
Merge pull request stripe-ruby-mock#787 from bubba/subscription-expand-latest-invoice
Expand subscription latest_invoice.payment_intent
2 parents a8e5376 + d0057f0 commit aefc082

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

lib/stripe_mock/request_handlers/subscriptions.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,21 @@ def create_subscription(route, method_url, params, headers)
141141
subscription[:canceled_at] = Time.now.utc.to_i
142142
end
143143

144+
if (s = params[:expand]&.first { |s| s.starts_with? 'latest_invoice' })
145+
payment_intent = nil
146+
unless subscription[:status] == 'trialing'
147+
intent_status = subscription[:status] == 'incomplete' ? 'requires_payment_method' : 'succeeded'
148+
intent = Data.mock_payment_intent({
149+
status: intent_status,
150+
amount: subscription[:plan][:amount],
151+
currency: subscription[:plan][:currency]
152+
})
153+
payment_intent = s.include?('latest_invoice.payment_intent') ? intent : intent.id
154+
end
155+
invoice = Data.mock_invoice([], { payment_intent: payment_intent })
156+
subscription[:latest_invoice] = invoice
157+
end
158+
144159
subscriptions[subscription[:id]] = subscription
145160
add_subscription_to_customer(customer, subscription)
146161

spec/shared_stripe_examples/subscription_examples.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,35 @@
684684
expect(subscription.default_tax_rates.first.id).to eq(tax_rate.id)
685685
end
686686
end
687+
688+
it 'expands latest_invoice.payment_intent' do
689+
customer = Stripe::Customer.create(source: gen_card_tk)
690+
subscription = Stripe::Subscription.create({
691+
customer: customer.id,
692+
plan: plan.id,
693+
expand: ['latest_invoice.payment_intent']
694+
})
695+
696+
expect(subscription.latest_invoice.payment_intent.status).to eq('succeeded')
697+
698+
subscription = Stripe::Subscription.create({
699+
customer: customer.id,
700+
plan: plan.id,
701+
expand: ['latest_invoice.payment_intent'],
702+
payment_behavior: 'default_incomplete'
703+
})
704+
705+
expect(subscription.latest_invoice.payment_intent.status).to eq('requires_payment_method')
706+
707+
subscription = Stripe::Subscription.create({
708+
customer: customer.id,
709+
plan: plan.id,
710+
expand: ['latest_invoice.payment_intent'],
711+
trial_period_days: 14
712+
})
713+
714+
expect(subscription.latest_invoice.payment_intent).to be_nil
715+
end
687716
end
688717

689718
context "updating a subscription" do

stripe-ruby-mock.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ Gem::Specification.new do |gem|
2828

2929
gem.add_development_dependency 'rspec', '~> 3.7.0'
3030
gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
31-
gem.add_development_dependency 'thin', '~> 1.6.4'
31+
gem.add_development_dependency 'thin', '~> 1.8.1'
3232
end

0 commit comments

Comments
 (0)