Campo whatsapp_message editável por modalidade (Filament) com fallback para template padrão. Cards da home, faixa 'Conversar com a Amare' e CTA final da página de detalhe abrem o WhatsApp diretamente quando número configurado, mantendo briefing como fallback.
139 lines
5.1 KiB
PHP
139 lines
5.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Feature\PublicSite;
|
|
|
|
use App\Models\SiteSetting;
|
|
use App\Models\WeddingPackage;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Tests\TestCase;
|
|
|
|
class PackageDetailTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
public function test_published_package_renders_all_detail_sections(): void
|
|
{
|
|
SiteSetting::instance();
|
|
|
|
$package = WeddingPackage::factory()->published()->create([
|
|
'slug' => 'essenza',
|
|
'eyebrow' => 'Assessoria',
|
|
'title_line' => 'Assessoria',
|
|
'title_emphasis' => 'Completa',
|
|
'hero_lead' => 'Do planejamento ao grande dia, com calma, precisão e cuidado.',
|
|
'benefits' => [
|
|
['icon_key' => 'calendar', 'label' => 'Organização integral'],
|
|
['icon_key' => 'users', 'label' => 'Fornecedores selecionados'],
|
|
],
|
|
'included_items' => [
|
|
['icon_key' => 'checklist', 'title' => 'Planejamento completo', 'description' => 'Cada etapa mapeada com clareza.'],
|
|
['icon_key' => 'map', 'title' => 'Gestão de fornecedores', 'description' => 'Contatos e prazos sob cuidado.'],
|
|
],
|
|
'audience_heading' => 'Para quem é este pacote',
|
|
'audience_intro' => 'Para quem quer uma assessoria completa, do início ao fim.',
|
|
'audience_points' => ['Casamentos', 'Eventos corporativos'],
|
|
'final_cta_heading' => 'Pronta para começar?',
|
|
'final_cta_body' => 'Conte seu evento para a Amare e receba uma proposta.',
|
|
]);
|
|
|
|
$response = $this->get(route('packages.show', $package->slug));
|
|
|
|
$response
|
|
->assertOk()
|
|
->assertSee('Assessoria')
|
|
->assertSee('Completa')
|
|
->assertSee('Do planejamento ao grande dia, com calma, precisão e cuidado.')
|
|
->assertSee('Organização integral')
|
|
->assertSee('Fornecedores selecionados')
|
|
->assertSee('O que está incluso')
|
|
->assertSee('Planejamento completo')
|
|
->assertSee('Cada etapa mapeada com clareza.')
|
|
->assertSee('Gestão de fornecedores')
|
|
->assertSee('Para quem é este pacote')
|
|
->assertSee('Casamentos')
|
|
->assertSee('Eventos corporativos')
|
|
->assertSee('Pronta para começar?')
|
|
->assertSee('Conte seu evento para a Amare e receba uma proposta.')
|
|
->assertSee('Solicitar proposta');
|
|
}
|
|
|
|
public function test_draft_package_returns_404(): void
|
|
{
|
|
SiteSetting::instance();
|
|
|
|
$package = WeddingPackage::factory()->create([
|
|
'slug' => 'rascunho-interno',
|
|
'title_line' => 'Rascunho',
|
|
]);
|
|
|
|
$response = $this->get(route('packages.show', $package->slug));
|
|
|
|
$response->assertNotFound();
|
|
}
|
|
|
|
public function test_unknown_slug_returns_404(): void
|
|
{
|
|
SiteSetting::instance();
|
|
|
|
$this->get(route('packages.show', 'inexistente'))->assertNotFound();
|
|
}
|
|
|
|
public function test_package_cta_uses_whatsapp_when_a_number_is_configured(): void
|
|
{
|
|
SiteSetting::instance()->update(['whatsapp_number' => '+55 11 98888-7777']);
|
|
|
|
$package = WeddingPackage::factory()->published()->create([
|
|
'name' => 'Essenza',
|
|
]);
|
|
|
|
$response = $this->get(route('packages.show', $package->slug));
|
|
|
|
$response
|
|
->assertOk()
|
|
->assertSee(
|
|
'https://wa.me/5511988887777?text='.rawurlencode('Olá, gostaria de conversar sobre a modalidade Essenza para meu casamento.'),
|
|
false,
|
|
)
|
|
->assertSee('target="_blank"', false)
|
|
->assertDontSee(route('briefing', ['servico_interesse' => 'Essenza']), false);
|
|
}
|
|
|
|
public function test_package_final_cta_uses_custom_whatsapp_message_when_provided(): void
|
|
{
|
|
SiteSetting::instance()->update(['whatsapp_number' => '+55 11 98888-7777']);
|
|
|
|
$package = WeddingPackage::factory()->published()->create([
|
|
'name' => 'Essenza',
|
|
'whatsapp_message' => 'Olá, tenho interesse na assessoria Essenza. Podem me passar mais detalhes?',
|
|
]);
|
|
|
|
$response = $this->get(route('packages.show', $package->slug));
|
|
|
|
$response
|
|
->assertOk()
|
|
->assertSee(
|
|
'https://wa.me/5511988887777?text='.rawurlencode('Olá, tenho interesse na assessoria Essenza. Podem me passar mais detalhes?'),
|
|
false,
|
|
)
|
|
->assertDontSee('gostaria de conversar sobre a modalidade Essenza para meu casamento', false);
|
|
}
|
|
|
|
public function test_package_cta_falls_back_to_briefing_without_whatsapp_number(): void
|
|
{
|
|
SiteSetting::instance();
|
|
|
|
$package = WeddingPackage::factory()->published()->create([
|
|
'name' => 'Essenza',
|
|
]);
|
|
|
|
$response = $this->get(route('packages.show', $package->slug));
|
|
|
|
$response
|
|
->assertOk()
|
|
->assertSee(route('briefing', ['servico_interesse' => 'Essenza']), false)
|
|
->assertDontSee('wa.me/', false);
|
|
}
|
|
}
|