'Amare Assessoria', 'default_meta_title' => 'Amare Assessoria de Eventos', 'default_meta_description' => 'Assessoria premium.', 'default_og_image_path' => 'og/default.jpg', 'default_og_image_alt' => 'Marca Amare', ]); $meta = PageMeta::forPage( canonical: 'https://amare.test/sobre', settings: $settings, ); $this->assertSame('Amare Assessoria de Eventos', $meta->title); $this->assertSame('Assessoria premium.', $meta->description); $this->assertSame('https://amare.test/sobre', $meta->canonical); $this->assertSame('website', $meta->ogType); $this->assertSame(url(Storage::disk('public')->url('og/default.jpg')), $meta->ogImageUrl); $this->assertSame('Marca Amare', $meta->ogImageAlt); } public function test_for_page_uses_explicit_overrides_when_provided(): void { Storage::fake('public'); $settings = new SiteSetting([ 'default_meta_title' => 'Default Title', 'default_meta_description' => 'Default Description', 'default_og_image_path' => 'og/default.jpg', 'default_og_image_alt' => 'Default alt', ]); $meta = PageMeta::forPage( canonical: 'https://amare.test/servicos', settings: $settings, title: 'Serviços', description: 'Catálogo de serviços', ogImageUrl: 'https://amare.test/storage/services/cover.jpg', ogImageAlt: 'Capa serviços', ); $this->assertSame('Serviços', $meta->title); $this->assertSame('Catálogo de serviços', $meta->description); $this->assertSame('https://amare.test/storage/services/cover.jpg', $meta->ogImageUrl); $this->assertSame('Capa serviços', $meta->ogImageAlt); } public function test_for_case_prefers_case_meta_and_cover_over_defaults(): void { Storage::fake('public'); $settings = new SiteSetting([ 'default_meta_title' => 'Default Title', 'default_meta_description' => 'Default Description', 'default_og_image_path' => 'og/default.jpg', 'default_og_image_alt' => 'Default alt', ]); $case = new PortfolioCase([ 'title' => 'Casamento Jardim', 'summary' => 'Resumo do caso', 'meta_title' => 'Meta do Casamento', 'meta_description' => 'Descrição SEO do casamento', 'cover_image_path' => 'cases/cover.jpg', 'cover_image_alt' => 'Capa do casamento', ]); $meta = PageMeta::forCase( case: $case, canonical: 'https://amare.test/portfolio/casamento-jardim', settings: $settings, ); $this->assertSame('Meta do Casamento', $meta->title); $this->assertSame('Descrição SEO do casamento', $meta->description); $this->assertSame('https://amare.test/portfolio/casamento-jardim', $meta->canonical); $this->assertSame('article', $meta->ogType); $this->assertSame(url(Storage::disk('public')->url('cases/cover.jpg')), $meta->ogImageUrl); $this->assertSame('Capa do casamento', $meta->ogImageAlt); } public function test_for_case_falls_back_to_title_summary_and_site_defaults(): void { Storage::fake('public'); $settings = new SiteSetting([ 'default_meta_title' => 'Default Title', 'default_meta_description' => 'Default Description', 'default_og_image_path' => 'og/default.jpg', 'default_og_image_alt' => 'Default alt', ]); $case = new PortfolioCase([ 'title' => 'Casamento Praia', 'summary' => 'Resumo praia', 'meta_title' => null, 'meta_description' => null, 'cover_image_path' => null, 'cover_image_alt' => null, ]); $meta = PageMeta::forCase( case: $case, canonical: 'https://amare.test/portfolio/casamento-praia', settings: $settings, ); $this->assertSame('Casamento Praia', $meta->title); $this->assertSame('Resumo praia', $meta->description); $this->assertSame(url(Storage::disk('public')->url('og/default.jpg')), $meta->ogImageUrl); $this->assertSame('Default alt', $meta->ogImageAlt); } }