# Tester un formulaire d’association avec génération de reçu fiscal Cerfa

> Vérifier que le PDF de reçu fiscal affiche les bons montants après un don simulé, pour un client associatif, sans juger de la conformité du document lui-même.

- Auteur : WordPress Développement
- Publié le : 2020-01-30
- Mis à jour le : 2020-01-30
- Catégorie : Tests
- URL : https://www.wpmoderne.fr/tests/cerfa-recu-fiscal-don-simule-phpunit/

## L’essentiel

- Don simulé de bout en bout
- Extraction de texte du PDF généré
- Montants et dates vérifiés, pas la mise en forme légale

66 % du montant d'un don à une association reconnue d'intérêt général peut être déduit des impôts, à condition que le donateur reçoive un reçu Cerfa correctement rempli. Sur une extension de don WordPress, ce document engage la confiance du donateur autant que celle de l'administration fiscale : une erreur de montant dans le PDF, et c'est le service comptable de l'association qui gère les réclamations.

Ce billet montre comment construire une recette de test qui simule un don de bout en bout et vérifie que le reçu généré contient les bonnes valeurs. Il ne traite pas de la conformité du modèle Cerfa lui-même : ce point relève d'un contrôle juridique, pas d'un test automatisé.

## Le problème : un PDF n'est pas un simple assemblage de texte

Un test qui se contente de vérifier qu'un fichier PDF a bien été créé ne dit rien de son contenu. Il faut ouvrir le document généré et en extraire le texte pour comparer les valeurs attendues aux valeurs réellement imprimées, montant en euros, date du don, identité du donateur, nom et objet de l'association.

Sur la plupart des extensions de don, le reçu est produit par une bibliothèque comme `dompdf` ou `tcpdf`, appelée après validation du paiement. Pour tester ce flux sans dépendre d'un vrai prestataire de paiement, on simule directement l'événement de don validé plutôt que de rejouer tout le tunnel Stripe.

## Simuler un don et générer le reçu en test

La factory PHPUnit crée un donateur fictif et une transaction, puis déclenche la génération du reçu comme le ferait le code de production.

```
class Test_Recu_Fiscal extends WP_UnitTestCase {

    public function test_recu_contient_le_bon_montant() {
        $don_id = $this->factory->post->create( array(
            'post_type' => 'don',
            'meta_input' => array(
                'montant'        => 100.00,
                'donateur_nom'   => 'Martine Vasseur',
                'date_don'       => '2020-01-15',
            ),
        ) );

        $chemin_pdf = Recus_Generateur::generer( $don_id );

        $this->assertFileExists( $chemin_pdf );
    }
}
```

> L'essentiel à retenir : Don simulé de bout en bout ; Extraction de texte du PDF généré ; Montants et dates vérifiés, pas la mise en forme légale

## Extraire et vérifier le texte du PDF généré

Pour lire le contenu, on utilise un outil d'extraction comme `smalot/pdfparser`, qui transforme le PDF en texte brut exploitable dans une assertion.

- Charger le fichier PDF avec le parseur
- Extraire le texte de la première page
- Vérifier la présence du montant formaté, par exemple « 100,00 € »
- Vérifier la présence du nom du donateur et de la date du don

```
$parser = new \Smalot\PdfParser\Parser();
$pdf    = $parser->parseFile( $chemin_pdf );
$texte  = $pdf->getText();

$this->assertStringContainsString( '100,00', $texte );
$this->assertStringContainsString( 'Martine Vasseur', $texte );
```

### Cas particulier des dons récurrents

Quand l'association propose des dons mensuels, le reçu fiscal annuel doit agréger plusieurs transactions. Le test doit alors simuler douze dons espacés dans l'année et vérifier que le total imprimé correspond bien à la somme, pas au dernier montant enregistré.

## Vérifier les cas limites de montant

Un montant avec des centimes, un don en plusieurs devises si l'association accepte les paiements internationaux, ou un montant arrondi bizarrement par une conversion flottante : ces cas méritent des tests dédiés.

1. Don de 33,33 € : vérifier l'arrondi affiché sur le reçu
2. Don cumulé sur l'année : vérifier le total, pas la dernière transaction
3. Don annulé après remboursement : vérifier qu'aucun reçu n'est généré

> Sur un projet associatif, on a appris à traiter chaque bug de reçu fiscal comme un ticket prioritaire : la confiance du donateur ne se refabrique pas après une erreur de montant.

## En résumé

Tester la génération d'un reçu Cerfa demande de sortir du réflexe habituel « le fichier existe, donc c'est bon » pour aller vérifier son contenu réel. L'extraction de texte depuis le PDF généré, combinée à une factory de dons simulés, suffit à couvrir les cas de montant, de date et d'identité les plus fréquents, sans se substituer à une vérification juridique du modèle lui-même.
