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