43 lines
1.5 KiB
PHP
43 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Enums;
|
|
|
|
use App\Enums\DocumentPriorityEnum;
|
|
use App\Enums\ShiftDayEnum;
|
|
use Tests\TestCase;
|
|
|
|
class EnumHasOptionsTest extends TestCase
|
|
{
|
|
public function test_values_returns_backing_values_in_declaration_order(): void
|
|
{
|
|
$this->assertSame(['عادی', 'اورژانسی'], DocumentPriorityEnum::values());
|
|
}
|
|
|
|
public function test_keys_returns_case_names_in_declaration_order(): void
|
|
{
|
|
$this->assertSame(['Medium', 'High'], DocumentPriorityEnum::keys());
|
|
}
|
|
|
|
public function test_from_name_resolves_case_by_name(): void
|
|
{
|
|
$this->assertSame(DocumentPriorityEnum::High, DocumentPriorityEnum::fromName('High'));
|
|
$this->assertSame(ShiftDayEnum::Friday, ShiftDayEnum::fromName('Friday'));
|
|
}
|
|
|
|
public function test_from_name_returns_null_for_unknown_or_value_input(): void
|
|
{
|
|
$this->assertNull(DocumentPriorityEnum::fromName('Urgent'));
|
|
$this->assertNull(DocumentPriorityEnum::fromName(DocumentPriorityEnum::High->value));
|
|
$this->assertNull(DocumentPriorityEnum::fromName('high'));
|
|
}
|
|
|
|
public function test_options_is_keyed_by_value_with_translation_per_case(): void
|
|
{
|
|
$options = DocumentPriorityEnum::options();
|
|
|
|
$this->assertSame(['عادی', 'اورژانسی'], array_keys($options));
|
|
$this->assertSame(__('enums.DocumentPriorityEnum.Medium'), $options['عادی']);
|
|
$this->assertSame(__('enums.DocumentPriorityEnum.High'), $options['اورژانسی']);
|
|
}
|
|
}
|