diff --git a/src/Domain/Value/LinkAlternate.php b/src/Domain/Value/LinkAlternate.php index 1f116d6..a4c36b0 100644 --- a/src/Domain/Value/LinkAlternate.php +++ b/src/Domain/Value/LinkAlternate.php @@ -46,8 +46,13 @@ public function __construct(array $values) Assert::keyExists($values, 'path'); $this->path = TrimmedNonEmptyString::fromString($values['path'])->toString(); - Assert::keyExists($values, 'translated_slug'); - $this->slug = TrimmedNonEmptyString::fromString($values['translated_slug'])->toString(); + $slug = null; + + if (\array_key_exists('translated_slug', $values)) { + $slug = TrimmedNonEmptyString::fromString($values['translated_slug'])->toString(); + } + + $this->slug = $slug ?? $this->path; Assert::keyExists($values, 'published'); $this->published = true === $values['published']; diff --git a/tests/Unit/Domain/Value/LinkAlternateTest.php b/tests/Unit/Domain/Value/LinkAlternateTest.php index f702297..3e702d2 100644 --- a/tests/Unit/Domain/Value/LinkAlternateTest.php +++ b/tests/Unit/Domain/Value/LinkAlternateTest.php @@ -129,14 +129,15 @@ public function slug(): void /** * @test */ - public function slugKeyMustExist(): void + public function slugKeyHasFallback(): void { - $values = self::faker()->linkAlternateResponse(); - unset($values['translated_slug']); + $values = self::faker()->linkAlternateResponse([ + 'path' => $path = self::faker()->slug(), + ]); - self::expectException(\InvalidArgumentException::class); + unset($values['translated_slug']); - new LinkAlternate($values); + self::assertSame($path, (new LinkAlternate($values))->slug); } /**