laravel-shop/tests/Unit/StockManagementTest.php

62 lines
1.5 KiB
PHP

<?php
namespace Blax\Shop\Tests\Unit;
use Blax\Shop\Models\Product;
use Blax\Shop\Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use PHPUnit\Framework\Attributes\Test;
class StockManagementTest extends TestCase
{
use RefreshDatabase;
#[Test]
public function it_detects_low_stock()
{
$product = Product::factory()->create([
'manage_stock' => true,
'stock_quantity' => 5,
'low_stock_threshold' => 10,
]);
$this->assertTrue($product->isLowStock());
}
#[Test]
public function it_detects_sufficient_stock()
{
$product = Product::factory()->withStocks(50)->create([
'low_stock_threshold' => 10,
]);
$this->assertFalse($product->isLowStock());
}
#[Test]
public function it_marks_product_as_out_of_stock()
{
$product = Product::factory()->create([
'manage_stock' => true,
'stock_quantity' => 0,
'in_stock' => false,
'stock_status' => 'outofstock',
]);
$this->assertFalse($product->in_stock);
$this->assertEquals('outofstock', $product->stock_status);
}
#[Test]
public function products_without_stock_management_are_always_in_stock()
{
$product = Product::factory()->create([
'manage_stock' => false,
'stock_quantity' => 0,
]);
// When stock management is disabled, product should be considered in stock
$this->assertFalse($product->manage_stock);
}
}