81 lines
2.5 KiB
PHP
81 lines
2.5 KiB
PHP
<?php
|
|
|
|
use App\Models\Hub;
|
|
use App\Models\Partner;
|
|
use App\Models\Product;
|
|
use App\Models\User;
|
|
|
|
test('partner belongs to hub', function () {
|
|
$hub = Hub::factory()->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);
|
|
});
|