ldc-mesbr-app/tests/Unit/Shared/Enums/CurrencyTest.php
2026-10-02 12:47:27 +02:00

66 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Unit\Shared\Enums;
use Shared\Enums\Currency;
covers(Currency::class);
describe('currency', function (): void {
it('has the expected cases with their backing values', function (): void {
// THEN
expect(Currency::EUR->value())->toBe(1);
});
it('exposes its case name', function (): void {
// THEN
expect(Currency::EUR->name())->toBe('EUR');
});
it('returns the defined label', function (): void {
// THEN
expect(Currency::EUR->label())->toBe('Euro');
});
it('lists all labels keyed by case name', function (): void {
// THEN
expect(Currency::toLabels())->toBe([
'EUR' => 'Euro',
]);
});
it('lists all values keyed by case name', function (): void {
// THEN
expect(Currency::toValues())->toBe([
'EUR' => 1,
]);
});
it('makes an instance from its backing value', function (): void {
// THEN
expect(Currency::make(1))->toBe(Currency::EUR);
});
it('makes an instance from a label', function (): void {
// THEN
expect(Currency::make('Euro', 'label'))->toBe(Currency::EUR);
});
it('returns the same instance when already an enum case', function (): void {
// THEN
expect(Currency::make(Currency::EUR))->toBe(Currency::EUR);
});
it('returns null for an unknown value', function (): void {
// THEN
expect(Currency::make(99))->toBeNull();
});
it('implements equals correctly', function (): void {
// THEN
expect(Currency::EUR->equals(Currency::EUR))->toBeTrue()
->and(Currency::EUR->equals(null))->toBeFalse();
});
});