b2in/tests/Feature/Models/ProductWoodOriginTest.php
2026-02-20 17:57:50 +01:00

48 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\Partner;
use App\Models\Product;
use App\Models\ProductWoodOrigin;
test('product wood origin can be created with factory', function () {
$partner = Partner::factory()->create();
$product = Product::factory()->create(['partner_id' => $partner->id]);
$origin = ProductWoodOrigin::factory()->create(['product_id' => $product->id]);
expect($origin)->toBeInstanceOf(ProductWoodOrigin::class);
expect($origin->wood_species)->not->toBeEmpty();
expect($origin->origin_country)->toHaveLength(2);
});
test('product wood origin belongs to product', function () {
$partner = Partner::factory()->create();
$product = Product::factory()->create(['partner_id' => $partner->id]);
$origin = ProductWoodOrigin::factory()->create(['product_id' => $product->id]);
expect($origin->product)->toBeInstanceOf(Product::class);
expect($origin->product->id)->toBe($product->id);
});
test('product has many wood origins', function () {
$partner = Partner::factory()->create();
$product = Product::factory()->create(['partner_id' => $partner->id]);
ProductWoodOrigin::factory()->count(3)->create(['product_id' => $product->id]);
expect($product->woodOrigins)->toHaveCount(3);
});
test('deleting product cascades to wood origins', function () {
$partner = Partner::factory()->create();
$product = Product::factory()->create(['partner_id' => $partner->id]);
ProductWoodOrigin::factory()->count(2)->create(['product_id' => $product->id]);
expect(ProductWoodOrigin::where('product_id', $product->id)->count())->toBe(2);
$product->delete();
expect(ProductWoodOrigin::where('product_id', $product->id)->count())->toBe(0);
});