Files
amare/tests/Feature/PublicSite/PartnerInquiryTest.php
manoel freitas 8decba693a
Some checks failed
CI / static (pull_request) Successful in 3m52s
CI / unit (pull_request) Successful in 4m54s
CI / feature (pull_request) Failing after 2m11s
CI / container (pull_request) Successful in 5m17s
CI / browser (pull_request) Successful in 7m25s
feat: polir delight editorial no site público (MAN-139)
Confirmação de briefing/parceria, micro-feedback de campos e nav, e copy mais humana nos erros — sem quebrar reduced-motion.

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

97 lines
3.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Feature\PublicSite;
use App\Mail\PartnerInquiry;
use App\Models\SiteSetting;
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Routing\Middleware\ThrottleRequests;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
class PartnerInquiryTest extends TestCase
{
use RefreshDatabase;
protected function setUp(): void
{
parent::setUp();
$this->withoutMiddleware([ThrottleRequests::class, PreventRequestForgery::class]);
}
/** @return array<string, string> */
private function validPayload(array $overrides = []): array
{
return array_merge([
'nome' => 'Ana Costa',
'empresa' => 'Flores da Ana',
'email' => 'ana@example.com',
'atuacao' => 'Florista',
'area_atendimento' => 'São Paulo capital',
'mensagem' => 'Gostaria de apresentar nosso portfólio para futuras parcerias.',
'portfolio_redes' => 'https://instagram.com/floresdaana',
'telefone' => '(11) 98888-7777',
'website' => '',
], $overrides);
}
public function test_contact_page_is_a_partner_journey_not_the_event_briefing(): void
{
SiteSetting::instance();
$this->get(route('contact'))
->assertOk()
->assertSee('Fornecedores e parcerias')
->assertSee('name="atuacao"', false)
->assertSee('name="area_atendimento"', false)
->assertSee('name="website"', false)
->assertDontSee('name="tipo_evento"', false)
->assertSee(route('privacy'), false);
}
public function test_valid_partner_inquiry_sends_only_the_dedicated_internal_email(): void
{
$settings = SiteSetting::instance();
Mail::fake();
$this->post(route('contact.store'), $this->validPayload())
->assertRedirect(route('contact'))
->assertSessionHas('status', 'partner-inquiry-sent');
Mail::assertQueued(PartnerInquiry::class, fn (PartnerInquiry $mail): bool => $mail->hasTo($settings->email));
Mail::assertQueued(PartnerInquiry::class, 1);
}
public function test_successful_partner_inquiry_shows_editorial_confirmation(): void
{
SiteSetting::instance();
Mail::fake();
$this
->from(route('contact'))
->followingRedirects()
->post(route('contact.store'), $this->validPayload())
->assertOk()
->assertSee('data-form-success', false)
->assertSee('Apresentação recebida')
->assertSee('Recebemos sua apresentação')
->assertDontSee('name="atuacao"', false);
}
public function test_partner_honeypot_reports_success_without_sending_mail(): void
{
SiteSetting::instance();
Mail::fake();
$this->post(route('contact.store'), $this->validPayload(['website' => 'https://spam.invalid']))
->assertRedirect(route('contact'))
->assertSessionHas('status', 'partner-inquiry-sent');
Mail::assertNothingSent();
}
}