- Add IncoStringParser, IncoIngredientParser, IncoParser, and IncoCompositionParser - Add ArcadiaBrandMapper, EmployeeMapper, IncoCompositionMapper, IncoShortMapper, and IncoMapper - Add complete unit test suites for all parsers and mappers
64 lines
1.7 KiB
PHP
64 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Unit\Infra\Adapters\Mappers;
|
|
|
|
use Domain\Models\ValueObjects\Brand\ArcadiaBrand;
|
|
use Infra\Adapters\Mappers\ArcadiaBrandMapper;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
covers(ArcadiaBrandMapper::class);
|
|
|
|
uses(TestCase::class);
|
|
|
|
describe('ArcadiaBrandMapper', function (): void {
|
|
it('maps an array row to ArcadiaBrand domain VO', function (): void {
|
|
$row = [
|
|
'COD_MARQ' => 1,
|
|
'LIB_MARQ' => 'LE GAULOIS',
|
|
];
|
|
|
|
$domain = ArcadiaBrandMapper::toDomain($row);
|
|
|
|
expect($domain)->toBeInstanceOf(ArcadiaBrand::class)
|
|
->and((string) $domain->id->value)->toBe('1')
|
|
->and($domain->name->value)->toBe('LE GAULOIS');
|
|
});
|
|
|
|
it('maps an object row to ArcadiaBrand domain VO', function (): void {
|
|
$row = (object) [
|
|
'COD_MARQ' => 2,
|
|
'LIB_MARQ' => 'MAITRE COQ',
|
|
];
|
|
|
|
$domain = ArcadiaBrandMapper::toDomain($row);
|
|
|
|
expect($domain)->toBeInstanceOf(ArcadiaBrand::class)
|
|
->and((string) $domain->id->value)->toBe('2')
|
|
->and($domain->name->value)->toBe('MAITRE COQ');
|
|
});
|
|
|
|
it('generates fallback name when libelle is empty', function (): void {
|
|
$row = [
|
|
'COD_MARQ' => 99,
|
|
'LIB_MARQ' => '',
|
|
];
|
|
|
|
$domain = ArcadiaBrandMapper::toDomain($row);
|
|
|
|
expect($domain->name->value)->toBe('Marque 99');
|
|
});
|
|
|
|
it('supports alternative lowercase or alias keys', function (): void {
|
|
$row = [
|
|
'code' => 3,
|
|
'libelle' => 'LOUE',
|
|
];
|
|
|
|
$domain = ArcadiaBrandMapper::toDomain($row);
|
|
|
|
expect((string) $domain->id->value)->toBe('3')
|
|
->and($domain->name->value)->toBe('LOUE');
|
|
});
|
|
});
|