feat: refactor cart and purchase handling to support polymorphic buyable types and improve code readability

This commit is contained in:
2026-07-16 09:55:38 -03:00
parent c05206cc51
commit 6fc6ed1fac
14 changed files with 196 additions and 79 deletions

View File

@@ -51,7 +51,8 @@ class StorePurchaseTest extends TestCase
$cartResponse = $this->actingAs($user, 'sanctum')
->postJson('/api/tenants/sonder/cart/items', [
'product_variant_id' => $variant->id,
'buyable_type' => 'variant',
'buyable_id' => $variant->id,
'cantidad' => 2,
])
->assertOk();
@@ -111,7 +112,8 @@ class StorePurchaseTest extends TestCase
]);
$this->assertDatabaseHas('carrito_items', [
'cart_id' => $cartId,
'producto_variante_id' => $variant->id,
'buyable_type' => ProductVariant::class,
'buyable_id' => $variant->id,
'cantidad' => 2,
]);
$this->assertDatabaseHas('productos_variantes', [
@@ -131,7 +133,8 @@ class StorePurchaseTest extends TestCase
$cartId = $this->actingAs($user, 'sanctum')
->postJson('/api/tenants/sonder/cart/items', [
'product_variant_id' => $variant->id,
'buyable_type' => 'variant',
'buyable_id' => $variant->id,
'cantidad' => 2,
])
->assertOk()
@@ -280,7 +283,8 @@ class StorePurchaseTest extends TestCase
$purchase = $this->createCheckoutPurchase($user, 'sonder', $variant, 2);
$purchase->items()->create([
'producto_variante_id' => $variant->id,
'buyable_type' => ProductVariant::class,
'buyable_id' => $variant->id,
'cantidad' => 1,
'precio_unitario' => '50.00',
'discount_total' => null,
@@ -326,7 +330,8 @@ class StorePurchaseTest extends TestCase
$cartId = $this->actingAs($owner, 'sanctum')
->postJson('/api/tenants/sonder/cart/items', [
'product_variant_id' => $variant->id,
'buyable_type' => 'variant',
'buyable_id' => $variant->id,
'cantidad' => 1,
])
->assertOk()
@@ -352,7 +357,8 @@ class StorePurchaseTest extends TestCase
$cartId = $this->actingAs($user, 'sanctum')
->postJson('/api/tenants/globex/cart/items', [
'product_variant_id' => $variant->id,
'buyable_type' => 'variant',
'buyable_id' => $variant->id,
'cantidad' => 1,
])
->assertOk()
@@ -492,7 +498,7 @@ class StorePurchaseTest extends TestCase
'status' => 'active',
]);
$cart->addItem($variant->id, $quantity);
$cart->addItem(ProductVariant::class, $variant->id, $quantity);
return app(CheckoutService::class)->startCheckout($tenant, $user->id, [
'cart_id' => $cart->id,