'ko',
'title' => '베이직 오버핏 코튼 티셔츠',
'titleSuffix' => ' | 코지홈',
'description' => '사계절 입기 좋은 오버핏 기본 티셔츠',
'keywords' => '티셔츠,오버핏',
'canonicalUrl' => 'https://example.com/shop/products/1',
'hreflangTags' => '',
'ogTags' => '',
'twitterTags' => '',
'jsonLd' => '{"@type":"Product","name":"베이직 오버핏 코튼 티셔츠"}',
'bodyHtml' => '
',
'googleAnalyticsId' => 'G-XXXX',
'googleVerification' => 'gverify123',
'naverVerification' => 'nverify456',
'stylesheets' => ['/api/templates/assets/sirsoft-basic/css/components.css', 'https://cdnjs.cloudflare.com/font-awesome.css'],
'extraHeadTags' => '',
'extraBodyEnd' => '',
'generatorTag' => '',
], $overrides);
}
private function renderPreview(array $overrides = []): string
{
return View::make('seo-preview', $this->viewData($overrides))->render();
}
public function test_seo_설정_산출물은_포함된다(): void
{
$out = $this->renderPreview();
$this->assertStringContainsString('베이직 오버핏 코튼 티셔츠 | 코지홈', $out);
$this->assertStringContainsString('name="description"', $out);
$this->assertStringContainsString('name="keywords"', $out);
$this->assertStringContainsString('rel="canonical"', $out);
$this->assertStringContainsString('hreflang="en"', $out);
$this->assertStringContainsString('property="og:title"', $out);
$this->assertStringContainsString('name="twitter:card"', $out);
$this->assertStringContainsString('application/ld+json', $out);
$this->assertStringContainsString('"@type":"Product"', $out);
// 사이트 소유권 확인 메타 = 검색엔진 SEO 설정 산출물.
$this->assertStringContainsString('google-site-verification', $out);
$this->assertStringContainsString('naver-site-verification', $out);
}
public function test_seo_설정_산출물이_아닌_것은_제외된다(): void
{
$out = $this->renderPreview();
// body 컴포넌트 마크업 — 페이지 본문(검색엔진 탭과 무관).
$this->assertStringNotContainsString('app-chrome', $out);
$this->assertStringNotContainsString('장바구니', $out);
$this->assertStringNotContainsString('