Files
shopit-back/tests/Unit/Sale/SaleDetailResourceTest.php

80 lines
2.8 KiB
PHP

<?php
namespace Tests\Unit\Sale;
use App\Domains\Cart\Models\Cart;
use App\Domains\Cart\Models\CartItem;
use App\Domains\Catalog\Models\CatalogItem;
use App\Domains\Purchase\Models\Purchase;
use App\Domains\Purchase\Models\PurchaseItem;
use App\Domains\Sale\Resources\AdminApp\SaleDetailResource;
use Illuminate\Http\Request;
use Tests\TestCase;
class SaleDetailResourceTest extends TestCase
{
public function test_it_serializes_the_purchased_item_snapshot(): void
{
$purchase = (new Purchase)->forceFill([
'id' => 15,
'total' => '30000.00',
]);
$item = (new PurchaseItem)->forceFill([
'id' => 8,
'item_nombre' => 'Comida',
'variant_attributes' => [
['name' => 'Fecha', 'value' => ['2026-10-12']],
],
'cantidad' => 3,
'precio_unitario' => '10000.00',
'total' => '30000.00',
]);
$purchase->setRelation('items', collect([$item]));
$data = (new SaleDetailResource($purchase))->resolve(Request::create('/'));
$this->assertSame(15, $data['id']);
$this->assertSame('Comida', $data['items'][0]['product']);
$this->assertSame(['2026-10-12'], $data['items'][0]['event_dates']);
$this->assertSame(3, $data['items'][0]['quantity']);
$this->assertSame('10000.00', $data['items'][0]['unit_price']);
$this->assertSame('30000.00', $data['items'][0]['total']);
$this->assertSame('30000.00', $data['total']);
}
public function test_it_uses_the_associated_cart_items_when_the_purchase_has_no_items(): void
{
$catalogItem = (new CatalogItem)->forceFill([
'id' => 21,
'nombre' => 'Entrada general',
'precio' => '12500.00',
]);
$cartItem = (new CartItem)->forceFill([
'id' => 34,
'catalog_item_id' => $catalogItem->id,
'cantidad' => 2,
]);
$cartItem->setRelation('catalogItem', $catalogItem);
$cartItem->setRelation('variant', null);
$cart = new Cart;
$cart->setRelation('items', collect([$cartItem]));
$purchase = (new Purchase)->forceFill([
'id' => 16,
'total' => '25000.00',
]);
$purchase->setRelation('items', collect());
$purchase->setRelation('cart', $cart);
$data = (new SaleDetailResource($purchase))->resolve(Request::create('/'));
$this->assertSame(34, $data['items'][0]['id']);
$this->assertSame('Entrada general', $data['items'][0]['product']);
$this->assertSame([], $data['items'][0]['event_dates']);
$this->assertSame(2, $data['items'][0]['quantity']);
$this->assertSame('12500.00', $data['items'][0]['unit_price']);
$this->assertSame('25000.00', $data['items'][0]['total']);
}
}