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); });