Files
amare/tests/Feature/PublicSite/HomePageContentTest.php
Manoel Freitas cf1589c916 feat: recreate public frontend with Heritage Editorial identity (#5)
* feat: recreate public frontend with Heritage Editorial identity

Replace placeholder visual system with EB Garamond/olive tokens, brand assets, editorial home narrative, São Paulo settings, real testimonials, and regenerated visual baselines.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs: archive recreate-public-frontend and sync Heritage Editorial specs

Merge delta requirements into main OpenSpec capabilities and move the completed change into the dated archive.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 23:39:00 -03:00

114 lines
3.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Feature\PublicSite;
use App\Models\PortfolioCase;
use App\Models\Service;
use App\Models\SiteSetting;
use App\Models\Testimonial;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class HomePageContentTest extends TestCase
{
use RefreshDatabase;
public function test_published_featured_content_appears_in_order_and_drafts_are_hidden(): void
{
$settings = SiteSetting::instance();
$settings->update([
'hero_title' => 'Celebrações com propósito',
'hero_cta_label' => 'Solicitar orçamento',
'manifesto_title' => 'Manifesto Amare',
]);
Service::factory()->create([
'title' => 'Serviço Rascunho',
'is_featured' => true,
'published_at' => null,
]);
Service::factory()->published()->featured()->create([
'title' => 'Serviço B',
'sort_order' => 20,
]);
Service::factory()->published()->featured()->create([
'title' => 'Serviço A',
'sort_order' => 10,
]);
PortfolioCase::factory()->create([
'title' => 'Caso Rascunho',
'is_featured' => true,
'published_at' => null,
]);
PortfolioCase::factory()->published()->create([
'title' => 'Caso B',
'is_featured' => true,
'sort_order' => 20,
]);
PortfolioCase::factory()->published()->create([
'title' => 'Caso A',
'is_featured' => true,
'sort_order' => 10,
]);
Testimonial::factory()->create([
'author_name' => 'Autor Rascunho',
'published_at' => null,
]);
Testimonial::factory()->published()->create([
'author_name' => 'Autor B',
'quote' => 'Depoimento B',
'sort_order' => 20,
]);
Testimonial::factory()->published()->create([
'author_name' => 'Autor A',
'quote' => 'Depoimento A',
'sort_order' => 10,
]);
$response = $this->get(route('home'));
$response
->assertOk()
->assertSee('Celebrações com propósito')
->assertSeeInOrder([
'id="hero-heading"',
'id="manifesto-heading"',
'id="services-heading"',
'id="portfolio-heading"',
'id="method-heading"',
'id="testimonials-heading"',
'id="positioning-heading"',
'id="final-cta-heading"',
], false)
->assertSeeInOrder(['Serviço A', 'Serviço B'])
->assertSeeInOrder(['Caso A', 'Caso B'])
->assertSeeInOrder(['Autor A', 'Autor B'])
->assertDontSee('Serviço Rascunho')
->assertDontSee('Caso Rascunho')
->assertDontSee('Autor Rascunho')
->assertSee('data-testid="home-primary-cta"', false)
->assertSee('href="'.route('contact').'"', false);
}
public function test_empty_sections_are_omitted_when_no_published_content(): void
{
SiteSetting::instance();
$response = $this->get(route('home'));
$response
->assertOk()
->assertDontSee('id="services-heading"', false)
->assertDontSee('id="portfolio-heading"', false)
->assertDontSee('id="testimonials-heading"', false)
->assertSee('id="manifesto-heading"', false)
->assertSee('id="method-heading"', false)
->assertSee('id="positioning-heading"', false)
->assertSee('id="final-cta-heading"', false);
}
}