create(); $partner = Partner::factory()->create(['hub_id' => $hub->id]); expect($partner->hub->id)->toBe($hub->id); }); test('partner has many users', function () { $partner = Partner::factory()->create(); User::factory()->count(3)->create(['partner_id' => $partner->id]); expect($partner->users)->toHaveCount(3); }); test('partner has many products', function () { $partner = Partner::factory()->create(); Product::factory()->count(2)->create(['partner_id' => $partner->id]); expect($partner->products)->toHaveCount(2); }); test('partner can have parent partner (broker)', function () { $broker = Partner::factory()->estateAgent()->create(); $customer = Partner::factory()->create(['parent_partner_id' => $broker->id]); expect($customer->parentPartner->id)->toBe($broker->id); expect($customer->broker()->first()->id)->toBe($broker->id); }); test('partner can have child partners (customers)', function () { $broker = Partner::factory()->estateAgent()->create(); Partner::factory()->count(2)->create(['parent_partner_id' => $broker->id]); expect($broker->childPartners)->toHaveCount(2); expect($broker->customers)->toHaveCount(2); }); test('partner factory has retailer state', function () { $partner = Partner::factory()->retailer()->create(); expect($partner->type->value)->toBe('Retailer'); }); test('partner factory has manufacturer state', function () { $partner = Partner::factory()->manufacturer()->create(); expect($partner->type->value)->toBe('Manufacturer'); }); test('partner factory has estateAgent state', function () { $partner = Partner::factory()->estateAgent()->create(); expect($partner->type->value)->toBe('Estate-Agent'); }); test('partner casts opening_hours to array', function () { $hours = ['mon' => '09:00-18:00', 'tue' => '09:00-18:00']; $partner = Partner::factory()->create(['opening_hours' => $hours]); $partner->refresh(); expect($partner->opening_hours)->toBeArray(); expect($partner->opening_hours['mon'])->toBe('09:00-18:00'); }); test('partner casts specialties to array', function () { $specialties = ['Küchen', 'Wohnzimmer', 'Schlafzimmer']; $partner = Partner::factory()->create(['specialties' => $specialties]); $partner->refresh(); expect($partner->specialties)->toBeArray(); expect($partner->specialties)->toHaveCount(3); });