ldc-boutique-cnc-sable/tests/Unit/App/Casts/OrderReferenceCastTest.php
Jérémy Munsch 713c937890
fix(casts): update OrderReferenceCast to use base58 encoding
Refactor OrderReferenceCast to utilize base58 encoding for order references instead of UUID.
This change improves compatibility with the new OrderReference implementation.
2026-10-27 16:17:28 +01:00

92 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
use App\Casts\OrderReferenceCast;
use Domain\Models\ValueObjects\OrderReference;
use Illuminate\Database\Eloquent\Model;
use Ramsey\Uuid\Uuid;
use Shared\Helpers\UuidHelper;
it('gets a reference', function () {
// GIVEN
$cast = new OrderReferenceCast();
$model = \Mockery::mock(Model::class);
$uuid = Uuid::uuid7();
$value = UuidHelper::toBase58($uuid);
// WHEN
$reference = $cast->get($model, 'reference', $value, []);
// THEN
expect($reference)->toBeInstanceOf(OrderReference::class)
->and((string) $reference)->toBe($value)
->and($reference->value->equals($uuid))->toBeTrue();
});
it('gets a reference from raw uuid string', function () {
// GIVEN
$cast = new OrderReferenceCast();
$model = \Mockery::mock(Model::class);
$uuid = Uuid::uuid7();
$value = $uuid->toString();
// WHEN
$reference = $cast->get($model, 'reference', $value, []);
// THEN
expect($reference)->toBeInstanceOf(OrderReference::class)
->and((string) $reference)->toBe(UuidHelper::toBase58($uuid))
->and($reference->value->equals($uuid))->toBeTrue();
});
it('throws exception when getting invalid reference', function () {
// GIVEN
$cast = new OrderReferenceCast();
$model = \Mockery::mock(Model::class);
// WHEN
$cast->get($model, 'reference', 123, []);
// THEN
})->throws(\UnexpectedValueException::class, 'OrderReference cannot be null.');
it('throws exception when getting null reference', function () {
// GIVEN
$cast = new OrderReferenceCast();
$model = \Mockery::mock(Model::class);
// WHEN
$cast->get($model, 'reference', null, []);
// THEN
})->throws(\UnexpectedValueException::class, 'OrderReference cannot be null.');
it('throws exception when setting invalid reference type', function () {
// GIVEN
$cast = new OrderReferenceCast();
$model = \Mockery::mock(Model::class);
$value = UuidHelper::toBase58(Uuid::uuid7());
// WHEN
$cast->set($model, 'reference', $value, []);
// THEN
})->throws(
\UnexpectedValueException::class,
'The given value is not an instance of OrderReference.'
);
it('sets a reference', function () {
// GIVEN
$cast = new OrderReferenceCast();
$model = \Mockery::mock(Model::class);
$uuid = Uuid::uuid7();
$reference = new OrderReference($uuid);
// WHEN
$value = $cast->set($model, 'reference', $reference, []);
// THEN
expect($value)->toBe(UuidHelper::toBase58($uuid));
});