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'); }); });