complete story 15.1
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
use App\Enums\PotentialClientType;
|
||||
|
||||
test('potential client type has correct cases', function () {
|
||||
expect(PotentialClientType::cases())->toHaveCount(3);
|
||||
});
|
||||
|
||||
test('potential client type individual has correct value', function () {
|
||||
expect(PotentialClientType::Individual->value)->toBe('individual');
|
||||
});
|
||||
|
||||
test('potential client type company has correct value', function () {
|
||||
expect(PotentialClientType::Company->value)->toBe('company');
|
||||
});
|
||||
|
||||
test('potential client type agency has correct value', function () {
|
||||
expect(PotentialClientType::Agency->value)->toBe('agency');
|
||||
});
|
||||
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
use App\Enums\PotentialClientType;
|
||||
use App\Models\PotentialClient;
|
||||
|
||||
test('type is cast to PotentialClientType enum', function () {
|
||||
$client = PotentialClient::factory()->create([
|
||||
'type' => PotentialClientType::Individual,
|
||||
]);
|
||||
|
||||
expect($client->type)->toBeInstanceOf(PotentialClientType::class)
|
||||
->and($client->type)->toBe(PotentialClientType::Individual);
|
||||
});
|
||||
|
||||
test('all fields are fillable', function () {
|
||||
$data = [
|
||||
'type' => PotentialClientType::Company,
|
||||
'name' => 'Test Company',
|
||||
'phone' => '+1234567890',
|
||||
'email' => 'test@example.com',
|
||||
'address' => '123 Test Street',
|
||||
'social_media' => 'https://twitter.com/test',
|
||||
'website' => 'https://example.com',
|
||||
'notes' => 'Some notes here',
|
||||
];
|
||||
|
||||
$client = PotentialClient::create($data);
|
||||
|
||||
expect($client->type)->toBe(PotentialClientType::Company)
|
||||
->and($client->name)->toBe('Test Company')
|
||||
->and($client->phone)->toBe('+1234567890')
|
||||
->and($client->email)->toBe('test@example.com')
|
||||
->and($client->address)->toBe('123 Test Street')
|
||||
->and($client->social_media)->toBe('https://twitter.com/test')
|
||||
->and($client->website)->toBe('https://example.com')
|
||||
->and($client->notes)->toBe('Some notes here');
|
||||
});
|
||||
|
||||
test('nullable fields can be null', function () {
|
||||
$client = PotentialClient::factory()->create([
|
||||
'type' => PotentialClientType::Individual,
|
||||
'name' => null,
|
||||
'phone' => null,
|
||||
'email' => null,
|
||||
'address' => null,
|
||||
'social_media' => null,
|
||||
'website' => null,
|
||||
'notes' => null,
|
||||
]);
|
||||
|
||||
expect($client->name)->toBeNull()
|
||||
->and($client->phone)->toBeNull()
|
||||
->and($client->email)->toBeNull()
|
||||
->and($client->address)->toBeNull()
|
||||
->and($client->social_media)->toBeNull()
|
||||
->and($client->website)->toBeNull()
|
||||
->and($client->notes)->toBeNull();
|
||||
});
|
||||
|
||||
test('factory individual state creates individual type', function () {
|
||||
$client = PotentialClient::factory()->individual()->create();
|
||||
|
||||
expect($client->type)->toBe(PotentialClientType::Individual);
|
||||
});
|
||||
|
||||
test('factory company state creates company type', function () {
|
||||
$client = PotentialClient::factory()->company()->create();
|
||||
|
||||
expect($client->type)->toBe(PotentialClientType::Company);
|
||||
});
|
||||
|
||||
test('factory agency state creates agency type', function () {
|
||||
$client = PotentialClient::factory()->agency()->create();
|
||||
|
||||
expect($client->type)->toBe(PotentialClientType::Agency);
|
||||
});
|
||||
|
||||
test('factory generates valid data', function () {
|
||||
$client = PotentialClient::factory()->create();
|
||||
|
||||
expect($client->type)->toBeInstanceOf(PotentialClientType::class)
|
||||
->and($client->id)->toBeInt();
|
||||
});
|
||||
|
||||
test('type enum returns english labels', function () {
|
||||
app()->setLocale('en');
|
||||
|
||||
expect(PotentialClientType::Individual->label())->toBe('Individual')
|
||||
->and(PotentialClientType::Company->label())->toBe('Company')
|
||||
->and(PotentialClientType::Agency->label())->toBe('Agency');
|
||||
});
|
||||
|
||||
test('type enum returns arabic labels', function () {
|
||||
app()->setLocale('ar');
|
||||
|
||||
expect(PotentialClientType::Individual->label())->toBe('فرد')
|
||||
->and(PotentialClientType::Company->label())->toBe('شركة')
|
||||
->and(PotentialClientType::Agency->label())->toBe('وكالة');
|
||||
});
|
||||
Reference in New Issue
Block a user