toBase58(); // WHEN $vo = getNewOrderReference($uuidBase58); // THEN expect($vo)->toBeInstanceOf(OrderReference::class); expect((string) $vo)->toBe($uuidBase58); }); it('throws exception if order reference is empty', function () { // GIVEN $value = ' '; // WHEN $action = fn () => getNewOrderReference($value); // THEN expect($action)->toThrow(\DomainException::class); }); it('throws exception if order reference is not a valid base58 string', function () { // GIVEN $value = 'invalid_base58_string!!!!'; // WHEN $action = fn () => getNewOrderReference($value); // THEN expect($action)->toThrow(\DomainException::class); }); it('throws exception if provided UUID is not v7', function () { // GIVEN $uuidV4Base58 = Uuid::v4()->toBase58(); // WHEN $action = fn () => getNewOrderReference($uuidV4Base58); // THEN expect($action)->toThrow(\DomainException::class); }); }); it('throws exception if base58 string is syntactically valid but invalid length when decoded', function (): void { // GIVEN $value = 'zzzzzzzzzzzzzzzzzzzzzz'; // 22 valid chars, but decodes to out-of-bounds UUID // WHEN $action = fn () => new OrderReference($value); // THEN expect($action)->toThrow(\DomainException::class, 'Order reference must be a valid base-58 string'); });