Files
Portfolio-Codex/tests/contact.test.php
2026-02-04 21:31:10 +01:00

90 lines
6.4 KiB
PHP

<?php
require_once __DIR__ . '/../includes/functions.php';
function assertTrue($cond, $msg) {
if (!$cond) {
fwrite(STDERR, $msg . PHP_EOL);
exit(1);
}
}
$content = file_get_contents(__DIR__ . '/../pages/contact.php');
assertTrue(strpos($content, "include_template('header'") !== false, 'missing header include');
assertTrue(strpos($content, "include_template('navbar'") !== false, 'missing navbar include');
assertTrue(strpos($content, "include_template('footer'") !== false, 'missing footer include');
assertTrue(strpos($content, 'Me Contacter') !== false, 'missing contact heading');
assertTrue(strpos($content, '<form') !== false, 'missing form');
assertTrue(strpos($content, 'method="POST"') !== false, 'missing form method');
assertTrue(strpos($content, 'action="/api/contact.php"') !== false, 'missing form action');
assertTrue(strpos($content, 'label for="nom"') !== false, 'missing nom label');
assertTrue(strpos($content, 'id="nom"') !== false, 'missing nom input');
assertTrue(strpos($content, 'label for="prenom"') !== false, 'missing prenom label');
assertTrue(strpos($content, 'id="prenom"') !== false, 'missing prenom input');
assertTrue(strpos($content, 'label for="email"') !== false, 'missing email label');
assertTrue(strpos($content, 'id="email"') !== false, 'missing email input');
assertTrue(strpos($content, 'label for="entreprise"') !== false, 'missing entreprise label');
assertTrue(strpos($content, 'id="entreprise"') !== false, 'missing entreprise input');
assertTrue(strpos($content, 'label for="categorie"') !== false, 'missing categorie label');
assertTrue(strpos($content, 'id="categorie"') !== false, 'missing categorie select');
assertTrue(strpos($content, 'label for="objet"') !== false, 'missing objet label');
assertTrue(strpos($content, 'id="objet"') !== false, 'missing objet input');
assertTrue(strpos($content, 'label for="message"') !== false, 'missing message label');
assertTrue(strpos($content, 'id="message"') !== false, 'missing message textarea');
assertTrue(strpos($content, 'data-error="nom"') !== false, 'missing nom error');
assertTrue(strpos($content, 'data-error="prenom"') !== false, 'missing prenom error');
assertTrue(strpos($content, 'data-error="email"') !== false, 'missing email error');
assertTrue(strpos($content, 'data-error="categorie"') !== false, 'missing categorie error');
assertTrue(strpos($content, 'data-error="objet"') !== false, 'missing objet error');
assertTrue(strpos($content, 'data-error="message"') !== false, 'missing message error');
assertTrue(strpos($content, 'id="submit-btn"') !== false, 'missing submit id');
assertTrue(strpos($content, 'id="clear-form-btn"') !== false, 'missing clear button id');
assertTrue(strpos($content, 'id="submit-text"') !== false, 'missing submit text');
assertTrue(strpos($content, 'id="submit-loading"') !== false, 'missing submit loading');
assertTrue(strpos($content, 'id="success-message"') !== false, 'missing success message');
assertTrue(strpos($content, 'id="error-message"') !== false, 'missing error message');
assertTrue(strpos($content, 'id="error-text"') !== false, 'missing error text');
assertTrue(strpos($content, '/assets/js/state.js') !== false, 'missing state script');
assertTrue(strpos($content, '/assets/js/contact-form.js') !== false, 'missing contact script');
assertTrue(preg_match('/id="nom"[^>]*required/', $content) === 1, 'nom missing required');
assertTrue(preg_match('/id="prenom"[^>]*required/', $content) === 1, 'prenom missing required');
assertTrue(preg_match('/id="email"[^>]*required/', $content) === 1, 'email missing required');
assertTrue(preg_match('/id="categorie"[^>]*required/', $content) === 1, 'categorie missing required');
assertTrue(preg_match('/id="objet"[^>]*required/', $content) === 1, 'objet missing required');
assertTrue(preg_match('/id="message"[^>]*required/', $content) === 1, 'message missing required');
assertTrue(preg_match('/<input[^>]*id="email"[^>]*type="email"|<input[^>]*type="email"[^>]*id="email"/', $content) === 1, 'email type not email');
assertTrue(preg_match('/id="nom"[^>]*maxlength="100"/', $content) === 1, 'nom maxlength');
assertTrue(preg_match('/id="prenom"[^>]*maxlength="100"/', $content) === 1, 'prenom maxlength');
assertTrue(preg_match('/id="email"[^>]*maxlength="255"/', $content) === 1, 'email maxlength');
assertTrue(preg_match('/id="entreprise"[^>]*maxlength="200"/', $content) === 1, 'entreprise maxlength');
assertTrue(preg_match('/id="objet"[^>]*maxlength="200"/', $content) === 1, 'objet maxlength');
assertTrue(preg_match('/id="message"[^>]*maxlength="5000"/', $content) === 1, 'message maxlength');
assertTrue(preg_match('/id="nom"[^>]*placeholder="Dupont"/', $content) === 1, 'nom placeholder');
assertTrue(preg_match('/id="prenom"[^>]*placeholder="Marie"/', $content) === 1, 'prenom placeholder');
assertTrue(preg_match('/id="email"[^>]*placeholder="marie\\.dupont@example\\.com"/', $content) === 1, 'email placeholder');
assertTrue(preg_match('/id="entreprise"[^>]*placeholder="Nom de votre entreprise"/', $content) === 1, 'entreprise placeholder');
assertTrue(preg_match('/id="objet"[^>]*placeholder="Résumez votre demande en quelques mots"/', $content) === 1, 'objet placeholder');
assertTrue(preg_match('/id="message"[^>]*placeholder="Décrivez votre projet ou votre demande\\.\\.\\."/', $content) === 1, 'message placeholder');
assertTrue(preg_match('/id="nom"[^>]*autocomplete="family-name"/', $content) === 1, 'nom autocomplete');
assertTrue(preg_match('/id="prenom"[^>]*autocomplete="given-name"/', $content) === 1, 'prenom autocomplete');
assertTrue(preg_match('/id="email"[^>]*autocomplete="email"/', $content) === 1, 'email autocomplete');
assertTrue(preg_match('/id="entreprise"[^>]*autocomplete="organization"/', $content) === 1, 'entreprise autocomplete');
assertTrue(strpos($content, 'text-primary') !== false, 'missing required marker');
assertTrue(strpos($content, '(optionnel)') !== false, 'missing optional marker');
assertTrue(strpos($content, 'Sélectionnez une catégorie...') !== false, 'missing categorie placeholder');
assertTrue(strpos($content, 'Je souhaite parler de mon projet') !== false, 'missing categorie projet');
assertTrue(strpos($content, 'Je souhaite vous proposer un poste') !== false, 'missing categorie poste');
assertTrue(strpos($content, 'Autre') !== false, 'missing categorie autre');
assertTrue(strpos($content, 'grid grid-cols-1 sm:grid-cols-2') !== false, 'missing responsive grid');
assertTrue(strpos($content, 'flex flex-col sm:flex-row') !== false, 'missing responsive buttons');
fwrite(STDOUT, "OK\n");