Add contact page with form, email template, and tests

- Create ContactController with GET/POST handling and MailerService integration
- Create contact page template with name, surname, email, message form
- Create dedicated email template for contact messages
- Update navbar links (desktop + mobile) to point to /contact route
- Add ContactControllerTest with 5 tests covering form submission and validation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-19 10:19:41 +01:00
parent b5020eae66
commit 28763e7ee1
5 changed files with 231 additions and 2 deletions

View File

@@ -0,0 +1,76 @@
<?php
namespace App\Tests\Controller;
use App\Service\MailerService;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ContactControllerTest extends WebTestCase
{
public function testContactPageReturnsSuccess(): void
{
$client = static::createClient();
$client->request('GET', '/contact');
self::assertResponseIsSuccessful();
}
public function testContactFormSubmitRedirectsWithSuccess(): void
{
$client = static::createClient();
$mailer = $this->createMock(MailerService::class);
$mailer->expects(self::once())->method('sendEmail');
static::getContainer()->set(MailerService::class, $mailer);
$client->request('POST', '/contact', [
'name' => 'Dupont',
'surname' => 'Jean',
'email' => 'jean@exemple.fr',
'message' => 'Bonjour, je voudrais des informations.',
]);
self::assertResponseRedirects('/contact');
$client->followRedirect();
self::assertSelectorExists('.font-black.text-sm');
}
public function testContactFormEmptyFieldsRedirectsWithError(): void
{
$client = static::createClient();
$client->request('POST', '/contact', [
'name' => '',
'surname' => 'Jean',
'email' => 'jean@exemple.fr',
'message' => 'Bonjour',
]);
self::assertResponseRedirects('/contact');
}
public function testContactFormAllEmptyRedirectsWithError(): void
{
$client = static::createClient();
$client->request('POST', '/contact', [
'name' => '',
'surname' => '',
'email' => '',
'message' => '',
]);
self::assertResponseRedirects('/contact');
}
public function testContactFormWhitespaceOnlyRedirectsWithError(): void
{
$client = static::createClient();
$client->request('POST', '/contact', [
'name' => ' ',
'surname' => 'Jean',
'email' => 'jean@exemple.fr',
'message' => 'Bonjour',
]);
self::assertResponseRedirects('/contact');
}
}