update([ 'default_meta_title' => 'Default Title', 'default_meta_description' => 'Default Description', 'default_og_image_path' => 'og/default.jpg', 'default_og_image_alt' => 'Default alt', ]); $case = PortfolioCase::factory()->published()->create([ 'slug' => 'casamento-jardim', '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', ]); $canonical = route('portfolio.show', $case->slug); $this->get($canonical) ->assertOk() ->assertSee('Meta do Casamento', false) ->assertSee('content="Descrição SEO do casamento"', false) ->assertSee('href="'.$canonical.'"', false) ->assertSee('content="article"', false) ->assertSee(Storage::disk('public')->url('cases/cover.jpg'), false) ->assertSee('content="Capa do casamento"', false); } public function test_case_without_meta_falls_back_to_title_summary_and_site_og(): void { Storage::fake('public'); SiteSetting::instance()->update([ 'default_meta_title' => 'Default Title', 'default_meta_description' => 'Default Description', 'default_og_image_path' => 'og/default.jpg', 'default_og_image_alt' => 'Default alt', ]); $case = PortfolioCase::factory()->published()->create([ 'slug' => 'casamento-praia', 'title' => 'Casamento Praia', 'summary' => 'Resumo praia', 'meta_title' => null, 'meta_description' => null, 'cover_image_path' => '', 'cover_image_alt' => '', ]); $canonical = route('portfolio.show', $case->slug); $this->get($canonical) ->assertOk() ->assertSee('Casamento Praia', false) ->assertSee('content="Resumo praia"', false) ->assertSee('href="'.$canonical.'"', false) ->assertSee(Storage::disk('public')->url('og/default.jpg'), false) ->assertSee('content="Default alt"', false); } public function test_institutional_page_falls_back_to_site_defaults_when_no_page_title_override_needed(): void { Storage::fake('public'); SiteSetting::instance()->update([ 'default_meta_title' => 'Amare Assessoria de Eventos', 'default_meta_description' => 'Assessoria premium.', 'default_og_image_path' => 'og/default.jpg', ]); $canonical = route('home'); $this->get($canonical) ->assertOk() ->assertSee('Amare Assessoria de Eventos', false) ->assertSee('content="Assessoria premium."', false) ->assertSee('href="'.$canonical.'"', false) ->assertSee(Storage::disk('public')->url('og/default.jpg'), false); } }