diff --git a/src/Domain/Value/Link.php b/src/Domain/Value/Link.php index a9943bf..fe8f853 100644 --- a/src/Domain/Value/Link.php +++ b/src/Domain/Value/Link.php @@ -71,8 +71,8 @@ public function __construct(array $values) Assert::keyExists($values, 'path'); - if (null !== $values['path']) { - $path = TrimmedNonEmptyString::fromString($values['path'])->toString(); + if (null !== $values['path'] && '' !== $values['path']) { + $path = TrimmedNonEmptyString::fromString($values['path'], 'The value of key "path" is invalid.')->toString(); } $this->path = $path ?? null; diff --git a/tests/Unit/Domain/Value/LinkTest.php b/tests/Unit/Domain/Value/LinkTest.php index 7005371..280eb61 100644 --- a/tests/Unit/Domain/Value/LinkTest.php +++ b/tests/Unit/Domain/Value/LinkTest.php @@ -14,6 +14,8 @@ namespace Storyblok\Api\Tests\Unit\Domain\Value; +use Ergebnis\DataProvider\StringProvider; +use PHPUnit\Framework\Attributes\DataProviderExternal; use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Storyblok\Api\Domain\Value\Link; @@ -153,6 +155,18 @@ public function pathKeyMustExist(): void new Link($values); } + #[DataProviderExternal(StringProvider::class, 'blank')] + #[Test] + public function pathMustBeValidString(string $value): void + { + $values = self::faker()->linkResponse(['path' => $value]); + + self::expectExceptionMessage('The value of key "path" is invalid.'); + self::expectException(\InvalidArgumentException::class); + + new Link($values); + } + #[Test] public function isFolder(): void {