Commit c4ca763a authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Poursuite des tests unitaires ; réparation des tests fonctionnels.

parent 6c0e21c7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -11607,7 +11607,7 @@
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/open-source/sygal-api.git",
                "reference": "d927ccc46475ebc77397bd6e1229f1a020769516"
                "reference": "09901c4cae9575041aa8a14a56a554295f179459"
            },
            "require": {
                "guzzlehttp/guzzle": "^7.0",
@@ -11632,7 +11632,7 @@
                ]
            },
            "description": "API SyGAL",
            "time": "2025-03-25T14:57:30+00:00"
            "time": "2025-03-25T09:55:31+00:00"
        },
        {
            "name": "unicaen/utilisateur",
+4 −0
Original line number Diff line number Diff line
@@ -91,6 +91,10 @@ $config = [
                ],
            ],
        ],
        // Options concernant les inscriptions administratives (IA)
        'inscription_administrative' => [
            'run_reception_process_after_import_process' => false,
        ],
    ],
    'import' => [

+37 −0
Original line number Diff line number Diff line
@@ -2,11 +2,48 @@

namespace Application\Process;

use Exception;
use RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;

abstract class AbstractProcess
{
    use EntityManagerAwareTrait;

    protected function beginTransaction(): void
    {
        try {
            // Cf. https://www.doctrine-project.org/projects/doctrine-dbal/en/current/reference/transactions.html
            $this->entityManager->getConnection()->setNestTransactionsWithSavepoints(true);
            $this->entityManager->getConnection()->beginTransaction();
        } catch (\Doctrine\DBAL\Exception $e) {
            throw new RuntimeException("Echec de l'ouverture d'une transaction en bdd", 0, $e);
        }
    }

    protected function commit(): void
    {
        try {
            $this->entityManager->flush();
            $this->entityManager->getConnection()->commit();
        } catch (Exception $e) {
            $exception = new RuntimeException("Echec du commit en bdd, rollback.", 0, $e);
            $this->rollback($exception);
            throw $exception;
        }
    }

    protected function rollback(?Exception $reason = null): void
    {
        try {
            $this->entityManager->getConnection()->rollback();
        } catch (\Doctrine\DBAL\Exception $e) {
            throw new RuntimeException(
                "Echec du rollback en bdd" . ($reason ? sprintf(" (raison du rollback : %s)", $reason->getMessage()) : ""),
                null,
                $e
            );
        }
    }

}
 No newline at end of file
+3 −3
Original line number Diff line number Diff line
@@ -49,17 +49,17 @@ class UtilisateurProcess extends AbstractProcess
                throw new RuntimeException($result->getErrorMessages()[0]);
            }

            $this->entityManager->commit();
            $this->entityManager->commit(); // TODO : utiliser $this->commit()
        }
        catch (RuntimeException $e) {
            $this->entityManager->rollback();
            $this->entityManager->rollback(); // TODO : utiliser $this->commit()
            throw new UtilisateurProcessException(
                "La notification n'a pas pu être envoyée : " . $e->getMessage(),
                null,
                $e);
        }
        catch (Exception $e) {
            $this->entityManager->rollback();
            $this->entityManager->rollback(); // TODO : utiliser $this->commit()
            throw new UtilisateurProcessException(
                "Un problème est survenu lors de la création du compte local : " . $e->getMessage(),
                null,
+6 −11
Original line number Diff line number Diff line
@@ -6,17 +6,12 @@ use InscriptionAdministrative\Controller\InscriptionAdministrativeController;
use InscriptionAdministrative\Controller\InscriptionAdministrativeControllerFactory;
use InscriptionAdministrative\Controller\Recherche\InscriptionAdministrativeRechercheController;
use InscriptionAdministrative\Controller\Recherche\InscriptionAdministrativeRechercheControllerFactory;
use InscriptionAdministrative\Listener\ImportProcessListener;
use InscriptionAdministrative\Listener\ImportProcessListenerFactory;
use InscriptionAdministrative\Process\Reception\ReceptionProcess;
use InscriptionAdministrative\Process\Reception\ReceptionProcessFactory;
use InscriptionAdministrative\Rule\Reception\ReceptionRule;
use InscriptionAdministrative\Rule\Reception\ReceptionRuleFactory;
use InscriptionAdministrative\Listener\InscriptionAdministrativeImportProcessListener;
use InscriptionAdministrative\Listener\InscriptionAdministrativeImportProcessListenerFactory;
use InscriptionAdministrative\Process\Reception\InscriptionAdministrativeReceptionProcess;
use InscriptionAdministrative\Process\Reception\InscriptionAdministrativeReceptionProcessFactory;
use InscriptionAdministrative\Rule\Reception\ReceptionRulePluginManager;
use InscriptionAdministrative\Rule\Reception\ReceptionRulePluginManagerFactory;
use InscriptionAdministrative\Rule\Reception\StatutAnnulee\StatutAnnuleeRule;
use InscriptionAdministrative\Rule\Reception\StatutValidee\StatutValideeRule;
use InscriptionAdministrative\Rule\Reception\StatutValidee\StatutValideeRuleFactory;
use InscriptionAdministrative\Service\InscriptionAdministrativeService;
use InscriptionAdministrative\Service\InscriptionAdministrativeServiceFactory;
use InscriptionAdministrative\Service\Search\InscriptionAdministrativeSearchService;
@@ -163,8 +158,8 @@ return [
        'factories' => [
            InscriptionAdministrativeService::class => InscriptionAdministrativeServiceFactory::class,
            InscriptionAdministrativeSearchService::class => InscriptionAdministrativeSearchServiceFactory::class,
            ImportProcessListener::class => ImportProcessListenerFactory::class,
            ReceptionProcess::class => ReceptionProcessFactory::class,
            InscriptionAdministrativeImportProcessListener::class => InscriptionAdministrativeImportProcessListenerFactory::class,
            InscriptionAdministrativeReceptionProcess::class => InscriptionAdministrativeReceptionProcessFactory::class,
            ReceptionRulePluginManager::class => ReceptionRulePluginManagerFactory::class,
        ]
    ]
Loading