48 lines
1.7 KiB
PHP
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);
|
|
});
|