update([ 'brand_name' => 'Amare Brand', 'email' => 'hello@amare.test', 'phone' => '(11) 91111-1111', 'city' => 'São Paulo - SP', ]); $html = $this->get(route('home'))->assertOk()->getContent(); $jsonLd = $this->extractJsonLd($html); $this->assertSame('Organization', $jsonLd['@type']); $this->assertSame('Amare Brand', $jsonLd['name']); $this->assertSame('hello@amare.test', $jsonLd['email']); $this->assertSame('(11) 91111-1111', $jsonLd['telephone']); $this->assertSame('São Paulo - SP', $jsonLd['address']['addressLocality']); } public function test_portfolio_show_emits_parseable_article_json_ld(): void { SiteSetting::instance(); $case = PortfolioCase::factory()->published()->create([ 'slug' => 'casamento-jardim', 'title' => 'Casamento Jardim', 'summary' => 'Resumo do caso', 'cover_image_path' => 'cases/cover.jpg', ]); $html = $this->get(route('portfolio.show', $case->slug))->assertOk()->getContent(); $jsonLd = $this->extractJsonLd($html); $this->assertContains($jsonLd['@type'], ['Article', 'CreativeWork']); $this->assertSame('Casamento Jardim', $jsonLd['headline'] ?? $jsonLd['name']); $this->assertSame('Resumo do caso', $jsonLd['description']); $this->assertSame(route('portfolio.show', $case->slug), $jsonLd['url'] ?? $jsonLd['mainEntityOfPage']); } /** * @return array */ private function extractJsonLd(string $html): array { $this->assertMatchesRegularExpression( '/