Refactoring - Version OK

This commit is contained in:
dahoud
2025-11-17 15:28:34 +00:00
parent edaa5b17ea
commit 40fdbedcad
43 changed files with 3564 additions and 5673 deletions

View File

@@ -6,6 +6,8 @@ import dev.lions.unionflow.server.api.dto.membre.MembreSearchCriteria;
import dev.lions.unionflow.server.api.dto.membre.MembreSearchResultDTO;
import dev.lions.unionflow.server.entity.Membre;
import dev.lions.unionflow.server.entity.Organisation;
import dev.lions.unionflow.server.repository.MembreRepository;
import dev.lions.unionflow.server.repository.OrganisationRepository;
import io.quarkus.panache.common.Page;
import io.quarkus.panache.common.Sort;
import io.quarkus.test.junit.QuarkusTest;
@@ -28,106 +30,86 @@ import org.junit.jupiter.api.*;
class MembreServiceAdvancedSearchTest {
@Inject MembreService membreService;
@Inject MembreRepository membreRepository;
@Inject OrganisationRepository organisationRepository;
private static Organisation testOrganisation;
private static List<Membre> testMembres;
private Organisation testOrganisation;
private List<Membre> testMembres;
@BeforeAll
@BeforeEach
@Transactional
static void setupTestData() {
// Créer une organisation de test
void setupTestData() {
// Créer et persister une organisation de test
testOrganisation =
Organisation.builder()
.nom("Organisation Test")
.typeOrganisation("ASSOCIATION")
.statut("ACTIF")
.actif(true)
.dateCreation(LocalDateTime.now())
.build();
testOrganisation.persist();
testOrganisation.setDateCreation(LocalDateTime.now());
testOrganisation.setActif(true);
organisationRepository.persist(testOrganisation);
// Créer des membres de test avec différents profils
testMembres =
List.of(
// Membre actif jeune
Membre.builder()
.numeroMembre("UF-2025-TEST001")
.nom("Dupont")
.prenom("Marie")
.email("marie.dupont@test.com")
.telephone("+221701234567")
.dateNaissance(LocalDate.of(1995, 5, 15))
.dateAdhesion(LocalDate.of(2023, 1, 15))
.roles("MEMBRE,SECRETAIRE")
.actif(true)
.organisation(testOrganisation)
.dateCreation(LocalDateTime.now())
.build(),
createMembre("UF-2025-TEST001", "Dupont", "Marie", "marie.dupont@test.com",
"+221701234567", LocalDate.of(1995, 5, 15), LocalDate.of(2023, 1, 15),
"MEMBRE,SECRETAIRE", true),
// Membre actif âgé
Membre.builder()
.numeroMembre("UF-2025-TEST002")
.nom("Martin")
.prenom("Jean")
.email("jean.martin@test.com")
.telephone("+221701234568")
.dateNaissance(LocalDate.of(1970, 8, 20))
.dateAdhesion(LocalDate.of(2020, 3, 10))
.roles("MEMBRE,PRESIDENT")
.actif(true)
.organisation(testOrganisation)
.dateCreation(LocalDateTime.now())
.build(),
createMembre("UF-2025-TEST002", "Martin", "Jean", "jean.martin@test.com",
"+221701234568", LocalDate.of(1970, 8, 20), LocalDate.of(2020, 3, 10),
"MEMBRE,PRESIDENT", true),
// Membre inactif
Membre.builder()
.numeroMembre("UF-2025-TEST003")
.nom("Diallo")
.prenom("Fatou")
.email("fatou.diallo@test.com")
.telephone("+221701234569")
.dateNaissance(LocalDate.of(1985, 12, 3))
.dateAdhesion(LocalDate.of(2021, 6, 5))
.roles("MEMBRE")
.actif(false)
.organisation(testOrganisation)
.dateCreation(LocalDateTime.now())
.build(),
createMembre("UF-2025-TEST003", "Diallo", "Fatou", "fatou.diallo@test.com",
"+221701234569", LocalDate.of(1985, 12, 3), LocalDate.of(2021, 6, 5),
"MEMBRE", false),
// Membre avec email spécifique
Membre.builder()
.numeroMembre("UF-2025-TEST004")
.nom("Sow")
.prenom("Amadou")
.email("amadou.sow@unionflow.com")
.telephone("+221701234570")
.dateNaissance(LocalDate.of(1988, 3, 12))
.dateAdhesion(LocalDate.of(2022, 9, 20))
.roles("MEMBRE,TRESORIER")
.actif(true)
.organisation(testOrganisation)
.dateCreation(LocalDateTime.now())
.build());
createMembre("UF-2025-TEST004", "Sow", "Amadou", "amadou.sow@unionflow.com",
"+221701234570", LocalDate.of(1988, 3, 12), LocalDate.of(2022, 9, 20),
"MEMBRE,TRESORIER", true));
// Persister tous les membres
testMembres.forEach(membre -> membre.persist());
testMembres.forEach(membre -> membreRepository.persist(membre));
}
@AfterAll
private Membre createMembre(String numero, String nom, String prenom, String email,
String telephone, LocalDate dateNaissance, LocalDate dateAdhesion,
String roles, boolean actif) {
Membre membre = Membre.builder()
.numeroMembre(numero)
.nom(nom)
.prenom(prenom)
.email(email)
.telephone(telephone)
.dateNaissance(dateNaissance)
.dateAdhesion(dateAdhesion)
.roles(roles)
.organisation(testOrganisation)
.build();
membre.setDateCreation(LocalDateTime.now());
membre.setActif(actif);
return membre;
}
@AfterEach
@Transactional
static void cleanupTestData() {
void cleanupTestData() {
// Nettoyer les données de test
if (testMembres != null) {
testMembres.forEach(
membre -> {
if (membre.isPersistent()) {
membre.delete();
}
});
testMembres.forEach(membre -> {
if (membre.getId() != null) {
membreRepository.delete(membre);
}
});
}
if (testOrganisation != null && testOrganisation.isPersistent()) {
testOrganisation.delete();
if (testOrganisation != null && testOrganisation.getId() != null) {
organisationRepository.delete(testOrganisation);
}
}