diff --git a/src/Subscription.php b/src/Subscription.php index ec3a2630..8c1a01f0 100644 --- a/src/Subscription.php +++ b/src/Subscription.php @@ -542,6 +542,12 @@ public function updateQuantity(int $quantity, ?string $price = null) 'quantity' => $stripeSubscription->quantity, ])->save(); + $singleSubscriptionItem = $this->items()->firstOrFail(); + + $singleSubscriptionItem->fill([ + 'quantity' => $stripeSubscription->quantity, + ])->save(); + $this->handlePaymentFailure($this); return $this; diff --git a/tests/Feature/SubscriptionsTest.php b/tests/Feature/SubscriptionsTest.php index 064ced14..8adc75e1 100644 --- a/tests/Feature/SubscriptionsTest.php +++ b/tests/Feature/SubscriptionsTest.php @@ -975,4 +975,25 @@ public function test_invoice_subscription_directly() $this->assertSame('paid', $invoice->status); $this->assertSame(2000, $invoice->total); } + + public function test_updating_single_price_subscription_quantity_updates_the_quantity_of_the_subscription_item() + { + $user = $this->createCustomer('invoice_subscription_directly'); + + $subscription = $user->newSubscription('main', static::$priceId) + ->create('pm_card_visa'); + + $subscription->updateQuantity(2); + + $this->assertDatabaseHas('subscriptions', [ + 'id' => $subscription->id, + 'quantity' => 2, + ]); + + $this->assertDatabaseHas('subscription_items', [ + 'subscription_id' => $subscription->id, + 'stripe_price' => static::$priceId, + 'quantity' => 2, + ]); + } }