Files
SkinbaseNova/tests/Feature/BrowseGalleryStructuredDataTest.php

83 lines
2.6 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\Category;
use App\Models\ContentType;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
it('renders content-type landing pages with collection, image gallery, breadcrumb, and item list structured data', function (): void {
$pages = [
[
'name' => 'Wallpapers',
'slug' => 'wallpapers',
'description' => 'Discover desktop and mobile wallpapers from the Skinbase creative community.',
],
[
'name' => 'Skins',
'slug' => 'skins',
'description' => 'Browse classic and modern skins from the Skinbase creative community.',
],
[
'name' => 'Digital Art',
'slug' => 'digital-art',
'description' => 'Explore digital art from the Skinbase creative community.',
],
[
'name' => 'Other',
'slug' => 'other',
'description' => 'Discover other creative works shared on Skinbase.',
],
];
foreach ($pages as $page) {
ContentType::query()->create($page);
$html = $this->get('/' . $page['slug'])
->assertOk()
->getContent();
expect($html)
->toContain('application/ld+json')
->toContain('CollectionPage')
->toContain('ImageGallery')
->toContain('BreadcrumbList')
->toContain('ItemList')
->toContain($page['name'])
->toContain('/explore');
}
});
it('renders category discovery pages with collection, image gallery, breadcrumb, and item list structured data', function (): void {
$contentType = ContentType::query()->create([
'name' => 'Wallpapers',
'slug' => 'wallpapers',
'description' => 'Discover desktop and mobile wallpapers from the Skinbase creative community.',
]);
$category = Category::query()->create([
'content_type_id' => $contentType->id,
'parent_id' => null,
'name' => 'Fantasy',
'slug' => 'fantasy',
'description' => 'Fantasy wallpapers and scenes.',
'is_active' => true,
'sort_order' => 1,
]);
$html = $this->get('/wallpapers/' . $category->slug)
->assertOk()
->getContent();
expect($html)
->toContain('application/ld+json')
->toContain('CollectionPage')
->toContain('ImageGallery')
->toContain('BreadcrumbList')
->toContain('ItemList')
->toContain('Fantasy')
->toContain('/explore')
->toContain('/wallpapers');
});