Files
SkinbaseNova/tests/Feature/Artworks/SimilarArtworksPageTest.php

59 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\Artwork;
use App\Models\Category;
use App\Models\ContentType;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
it('renders the similar artworks page without duplicate seo head tags', function (): void {
$author = User::factory()->create([
'username' => 'similarmetaauthor',
'name' => 'Similar Meta Author',
]);
$contentType = ContentType::query()->create([
'name' => 'Skins',
'slug' => 'skins',
'description' => 'Skins content type',
]);
$category = Category::query()->create([
'content_type_id' => $contentType->id,
'name' => 'Internet',
'slug' => 'internet',
'description' => 'Internet skins',
'is_active' => true,
'sort_order' => 1,
]);
$artwork = Artwork::factory()->for($author)->create([
'title' => 'Similar Head Artwork',
'slug' => 'similar-head-artwork',
'published_at' => now()->subHour(),
'is_public' => true,
'is_approved' => true,
]);
$artwork->categories()->attach($category->id);
$response = $this->get(route('art.similar', ['id' => $artwork->id]));
$response->assertOk();
$html = $response->getContent();
expect($html)
->toContain('Similar Artworks')
->toContain('application/ld+json');
expect(substr_count($html, '<meta name="description"'))->toBe(1);
expect(substr_count($html, '<link rel="canonical"'))->toBe(1);
expect(substr_count($html, 'property="og:title"'))->toBe(1);
expect(substr_count($html, 'name="twitter:title"'))->toBe(1);
expect(substr_count($html, 'name="robots"'))->toBe(1);
});