Refactor OrderReferenceCast to utilize base58 encoding for order references instead of UUID. This change improves compatibility with the new OrderReference implementation.
92 lines
2.5 KiB
PHP
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));
|
|
});
|