test(sprint-10 api): tests DTOs Sprint 10 pour Jacoco 100%
Build api 1.0.8 a échoué sur jacoco:check (97-99% < 100% requis). Ajout des tests manquants pour les 6 nouveaux DTOs + extension UpdateOrganisationRequestTest. Tests ajoutés - CreateBeneficiaireEffectifRequestTest : 8 tests (builder all-fields, validation 5 champs obligatoires, nationalité ISO-3, natureControle regex, pourcentage 0-100, paysResidence vide accepté, valide complet, equals/hash/toString) - UpdateBeneficiaireEffectifRequestTest : 7 tests (builder, vide valide, pourcentage > 100, nationalité format, natureControle invalide / vide, equals/hash/toString) - BeneficiaireEffectifResponseTest : 3 tests (all-fields, null defaults, equals) - AuditTrailOperationResponseTest : 3 tests (all-fields, null defaults, equals) - CreateRoleDelegationRequestTest : 6 tests (builder, 6 champs obligatoires, role regex, dateFin future, valide, equals) - RoleDelegationResponseTest : 3 tests (all-fields, null, equals) - UpdateOrganisationRequestTest : 4 tests ajoutés (referentielComptable valide × 3, vide accepté, invalide, complianceOfficerId) Total +34 tests, attendus pour rétablir Jacoco 100% bundle.
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package dev.lions.unionflow.server.api.dto.audit.response;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class AuditTrailOperationResponseTest {
|
||||
|
||||
@Test
|
||||
void testBuilder_AllFields() {
|
||||
UUID id = UUID.randomUUID();
|
||||
UUID userId = UUID.randomUUID();
|
||||
UUID orgId = UUID.randomUUID();
|
||||
UUID entityId = UUID.randomUUID();
|
||||
UUID requestId = UUID.randomUUID();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
AuditTrailOperationResponse r = AuditTrailOperationResponse.builder()
|
||||
.id(id).userId(userId).userEmail("a@b.com").roleActif("TRESORIER")
|
||||
.organisationActiveId(orgId)
|
||||
.actionType("PAYMENT_INITIATED").entityType("Paiement").entityId(entityId)
|
||||
.description("Paiement initié")
|
||||
.ipAddress("192.168.1.1").userAgent("Mozilla").requestId(requestId)
|
||||
.payloadAvant("{}").payloadApres("{\"k\":1}").metadata("{\"src\":\"web\"}")
|
||||
.sodCheckPassed(true).sodViolations(null)
|
||||
.operationAt(now)
|
||||
.build();
|
||||
|
||||
assertThat(r.id()).isEqualTo(id);
|
||||
assertThat(r.userId()).isEqualTo(userId);
|
||||
assertThat(r.userEmail()).isEqualTo("a@b.com");
|
||||
assertThat(r.roleActif()).isEqualTo("TRESORIER");
|
||||
assertThat(r.organisationActiveId()).isEqualTo(orgId);
|
||||
assertThat(r.actionType()).isEqualTo("PAYMENT_INITIATED");
|
||||
assertThat(r.entityType()).isEqualTo("Paiement");
|
||||
assertThat(r.entityId()).isEqualTo(entityId);
|
||||
assertThat(r.description()).isEqualTo("Paiement initié");
|
||||
assertThat(r.ipAddress()).isEqualTo("192.168.1.1");
|
||||
assertThat(r.userAgent()).isEqualTo("Mozilla");
|
||||
assertThat(r.requestId()).isEqualTo(requestId);
|
||||
assertThat(r.payloadAvant()).isEqualTo("{}");
|
||||
assertThat(r.payloadApres()).isEqualTo("{\"k\":1}");
|
||||
assertThat(r.metadata()).isEqualTo("{\"src\":\"web\"}");
|
||||
assertThat(r.sodCheckPassed()).isTrue();
|
||||
assertThat(r.sodViolations()).isNull();
|
||||
assertThat(r.operationAt()).isEqualTo(now);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuilder_NullFields() {
|
||||
AuditTrailOperationResponse r = AuditTrailOperationResponse.builder().build();
|
||||
assertThat(r.id()).isNull();
|
||||
assertThat(r.sodCheckPassed()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEqualsHashCodeToString() {
|
||||
UUID id = UUID.randomUUID();
|
||||
AuditTrailOperationResponse a = AuditTrailOperationResponse.builder().id(id).build();
|
||||
AuditTrailOperationResponse b = AuditTrailOperationResponse.builder().id(id).build();
|
||||
assertThat(a).isEqualTo(b);
|
||||
assertThat(a.hashCode()).isEqualTo(b.hashCode());
|
||||
assertThat(a.toString()).contains("AuditTrailOperationResponse");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package dev.lions.unionflow.server.api.dto.delegation.request;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import jakarta.validation.ConstraintViolation;
|
||||
import jakarta.validation.Validation;
|
||||
import jakarta.validation.Validator;
|
||||
import jakarta.validation.ValidatorFactory;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class CreateRoleDelegationRequestTest {
|
||||
|
||||
private Validator validator;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
|
||||
validator = factory.getValidator();
|
||||
}
|
||||
|
||||
private CreateRoleDelegationRequest.CreateRoleDelegationRequestBuilder valide() {
|
||||
return CreateRoleDelegationRequest.builder()
|
||||
.organisationId(UUID.randomUUID())
|
||||
.delegantUserId(UUID.randomUUID())
|
||||
.delegataireUserId(UUID.randomUUID())
|
||||
.roleDelegue("TRESORIER")
|
||||
.dateDebut(LocalDateTime.now().plusHours(1))
|
||||
.dateFin(LocalDateTime.now().plusDays(14));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuilder_AllFields() {
|
||||
UUID org = UUID.randomUUID();
|
||||
UUID delegant = UUID.randomUUID();
|
||||
UUID delegataire = UUID.randomUUID();
|
||||
LocalDateTime debut = LocalDateTime.of(2026, 5, 1, 9, 0);
|
||||
LocalDateTime fin = LocalDateTime.of(2026, 5, 15, 18, 0);
|
||||
|
||||
CreateRoleDelegationRequest req = CreateRoleDelegationRequest.builder()
|
||||
.organisationId(org).delegantUserId(delegant).delegataireUserId(delegataire)
|
||||
.roleDelegue("TRESORIER").dateDebut(debut).dateFin(fin).motif("Congé")
|
||||
.build();
|
||||
|
||||
assertThat(req.organisationId()).isEqualTo(org);
|
||||
assertThat(req.delegantUserId()).isEqualTo(delegant);
|
||||
assertThat(req.delegataireUserId()).isEqualTo(delegataire);
|
||||
assertThat(req.roleDelegue()).isEqualTo("TRESORIER");
|
||||
assertThat(req.dateDebut()).isEqualTo(debut);
|
||||
assertThat(req.dateFin()).isEqualTo(fin);
|
||||
assertThat(req.motif()).isEqualTo("Congé");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_ChampsObligatoires() {
|
||||
CreateRoleDelegationRequest req = CreateRoleDelegationRequest.builder().build();
|
||||
Set<ConstraintViolation<CreateRoleDelegationRequest>> v = validator.validate(req);
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("organisationId"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("delegantUserId"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("delegataireUserId"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("roleDelegue"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("dateDebut"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("dateFin"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_RoleFormatInvalide() {
|
||||
CreateRoleDelegationRequest req = valide().roleDelegue("admin-org").build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("roleDelegue"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_DateFinPassee() {
|
||||
CreateRoleDelegationRequest req = valide()
|
||||
.dateFin(LocalDateTime.now().minusDays(1)).build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("dateFin"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_Valide() {
|
||||
assertThat(validator.validate(valide().motif("OK").build())).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEqualsHashCodeToString() {
|
||||
UUID org = UUID.randomUUID();
|
||||
UUID d1 = UUID.randomUUID();
|
||||
UUID d2 = UUID.randomUUID();
|
||||
LocalDateTime debut = LocalDateTime.now().plusHours(1);
|
||||
LocalDateTime fin = LocalDateTime.now().plusDays(7);
|
||||
CreateRoleDelegationRequest a = CreateRoleDelegationRequest.builder()
|
||||
.organisationId(org).delegantUserId(d1).delegataireUserId(d2)
|
||||
.roleDelegue("TRESORIER").dateDebut(debut).dateFin(fin).build();
|
||||
CreateRoleDelegationRequest b = CreateRoleDelegationRequest.builder()
|
||||
.organisationId(org).delegantUserId(d1).delegataireUserId(d2)
|
||||
.roleDelegue("TRESORIER").dateDebut(debut).dateFin(fin).build();
|
||||
assertThat(a).isEqualTo(b);
|
||||
assertThat(a.hashCode()).isEqualTo(b.hashCode());
|
||||
assertThat(a.toString()).contains("CreateRoleDelegationRequest");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package dev.lions.unionflow.server.api.dto.delegation.response;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class RoleDelegationResponseTest {
|
||||
|
||||
@Test
|
||||
void testBuilder_AllFields() {
|
||||
UUID id = UUID.randomUUID();
|
||||
UUID org = UUID.randomUUID();
|
||||
UUID d1 = UUID.randomUUID();
|
||||
UUID d2 = UUID.randomUUID();
|
||||
LocalDateTime debut = LocalDateTime.of(2026, 5, 1, 9, 0);
|
||||
LocalDateTime fin = LocalDateTime.of(2026, 5, 15, 18, 0);
|
||||
LocalDateTime revoc = LocalDateTime.of(2026, 5, 10, 12, 0);
|
||||
LocalDateTime cree = LocalDateTime.of(2026, 4, 25, 12, 0);
|
||||
|
||||
RoleDelegationResponse r = RoleDelegationResponse.builder()
|
||||
.id(id).organisationId(org).delegantUserId(d1).delegataireUserId(d2)
|
||||
.roleDelegue("TRESORIER").dateDebut(debut).dateFin(fin).motif("Congé")
|
||||
.statut("REVOQUEE").dateRevocation(revoc).dateCreation(cree).estActive(false)
|
||||
.build();
|
||||
|
||||
assertThat(r.id()).isEqualTo(id);
|
||||
assertThat(r.organisationId()).isEqualTo(org);
|
||||
assertThat(r.delegantUserId()).isEqualTo(d1);
|
||||
assertThat(r.delegataireUserId()).isEqualTo(d2);
|
||||
assertThat(r.roleDelegue()).isEqualTo("TRESORIER");
|
||||
assertThat(r.dateDebut()).isEqualTo(debut);
|
||||
assertThat(r.dateFin()).isEqualTo(fin);
|
||||
assertThat(r.motif()).isEqualTo("Congé");
|
||||
assertThat(r.statut()).isEqualTo("REVOQUEE");
|
||||
assertThat(r.dateRevocation()).isEqualTo(revoc);
|
||||
assertThat(r.dateCreation()).isEqualTo(cree);
|
||||
assertThat(r.estActive()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuilder_NullFields() {
|
||||
RoleDelegationResponse r = RoleDelegationResponse.builder().build();
|
||||
assertThat(r.id()).isNull();
|
||||
assertThat(r.statut()).isNull();
|
||||
assertThat(r.estActive()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEqualsHashCodeToString() {
|
||||
UUID id = UUID.randomUUID();
|
||||
RoleDelegationResponse a = RoleDelegationResponse.builder().id(id).build();
|
||||
RoleDelegationResponse b = RoleDelegationResponse.builder().id(id).build();
|
||||
assertThat(a).isEqualTo(b);
|
||||
assertThat(a.hashCode()).isEqualTo(b.hashCode());
|
||||
assertThat(a.toString()).contains("RoleDelegationResponse");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
package dev.lions.unionflow.server.api.dto.kyc.request;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import dev.lions.unionflow.server.api.enums.membre.TypePieceIdentite;
|
||||
import jakarta.validation.ConstraintViolation;
|
||||
import jakarta.validation.Validation;
|
||||
import jakarta.validation.Validator;
|
||||
import jakarta.validation.ValidatorFactory;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class CreateBeneficiaireEffectifRequestTest {
|
||||
|
||||
private Validator validator;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
|
||||
validator = factory.getValidator();
|
||||
}
|
||||
|
||||
private CreateBeneficiaireEffectifRequest.CreateBeneficiaireEffectifRequestBuilder valide() {
|
||||
return CreateBeneficiaireEffectifRequest.builder()
|
||||
.kycDossierId(UUID.randomUUID())
|
||||
.nom("Dupont")
|
||||
.prenoms("Jean Pierre")
|
||||
.dateNaissance(LocalDate.of(1980, 5, 15))
|
||||
.nationalite("CIV")
|
||||
.natureControle("DETENTION_CAPITAL");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuilder_AllFields() {
|
||||
UUID kyc = UUID.randomUUID();
|
||||
UUID org = UUID.randomUUID();
|
||||
UUID membre = UUID.randomUUID();
|
||||
CreateBeneficiaireEffectifRequest req = CreateBeneficiaireEffectifRequest.builder()
|
||||
.kycDossierId(kyc).organisationCibleId(org).membreId(membre)
|
||||
.nom("Doe").prenoms("John")
|
||||
.dateNaissance(LocalDate.of(1980, 1, 1))
|
||||
.lieuNaissance("Abidjan")
|
||||
.nationalite("CIV").paysResidence("FRA")
|
||||
.typePieceIdentite(TypePieceIdentite.PASSEPORT)
|
||||
.numeroPieceIdentite("AB123")
|
||||
.dateExpirationPiece(LocalDate.of(2030, 1, 1))
|
||||
.pourcentageCapital(new BigDecimal("30"))
|
||||
.pourcentageDroitsVote(new BigDecimal("25"))
|
||||
.natureControle("BENEFICIAIRE_ULTIME")
|
||||
.estPep(true).pepCategorie("MINISTRE").pepPays("CIV").pepFonction("Min Finance")
|
||||
.presenceListesSanctions(true).detailsListesSanctions("Liste UN 2024")
|
||||
.build();
|
||||
assertThat(req.kycDossierId()).isEqualTo(kyc);
|
||||
assertThat(req.organisationCibleId()).isEqualTo(org);
|
||||
assertThat(req.membreId()).isEqualTo(membre);
|
||||
assertThat(req.nom()).isEqualTo("Doe");
|
||||
assertThat(req.prenoms()).isEqualTo("John");
|
||||
assertThat(req.lieuNaissance()).isEqualTo("Abidjan");
|
||||
assertThat(req.paysResidence()).isEqualTo("FRA");
|
||||
assertThat(req.typePieceIdentite()).isEqualTo(TypePieceIdentite.PASSEPORT);
|
||||
assertThat(req.numeroPieceIdentite()).isEqualTo("AB123");
|
||||
assertThat(req.dateExpirationPiece()).isEqualTo(LocalDate.of(2030, 1, 1));
|
||||
assertThat(req.pourcentageCapital()).isEqualByComparingTo("30");
|
||||
assertThat(req.pourcentageDroitsVote()).isEqualByComparingTo("25");
|
||||
assertThat(req.natureControle()).isEqualTo("BENEFICIAIRE_ULTIME");
|
||||
assertThat(req.estPep()).isTrue();
|
||||
assertThat(req.pepCategorie()).isEqualTo("MINISTRE");
|
||||
assertThat(req.pepPays()).isEqualTo("CIV");
|
||||
assertThat(req.pepFonction()).isEqualTo("Min Finance");
|
||||
assertThat(req.presenceListesSanctions()).isTrue();
|
||||
assertThat(req.detailsListesSanctions()).isEqualTo("Liste UN 2024");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_ChampsObligatoires() {
|
||||
CreateBeneficiaireEffectifRequest req = CreateBeneficiaireEffectifRequest.builder().build();
|
||||
Set<ConstraintViolation<CreateBeneficiaireEffectifRequest>> v = validator.validate(req);
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("nom"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("prenoms"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("dateNaissance"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("nationalite"));
|
||||
assertThat(v).anyMatch(x -> x.getPropertyPath().toString().equals("natureControle"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_NationaliteFormatInvalide() {
|
||||
CreateBeneficiaireEffectifRequest req = valide().nationalite("FR").build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("nationalite"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_NatureControleInvalide() {
|
||||
CreateBeneficiaireEffectifRequest req = valide().natureControle("AUTRE").build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("natureControle"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_PourcentageHorsBornes() {
|
||||
CreateBeneficiaireEffectifRequest req = valide().pourcentageCapital(new BigDecimal("150")).build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("pourcentageCapital"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_PaysResidenceVideAccepte() {
|
||||
CreateBeneficiaireEffectifRequest req = valide().paysResidence("").build();
|
||||
assertThat(validator.validate(req))
|
||||
.noneMatch(v -> v.getPropertyPath().toString().equals("paysResidence"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_Valide() {
|
||||
assertThat(validator.validate(valide().build())).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEqualsHashCodeToString() {
|
||||
CreateBeneficiaireEffectifRequest a = valide().build();
|
||||
CreateBeneficiaireEffectifRequest b = CreateBeneficiaireEffectifRequest.builder()
|
||||
.kycDossierId(a.kycDossierId()).nom(a.nom()).prenoms(a.prenoms())
|
||||
.dateNaissance(a.dateNaissance()).nationalite(a.nationalite())
|
||||
.natureControle(a.natureControle()).build();
|
||||
assertThat(a).isEqualTo(b);
|
||||
assertThat(a.hashCode()).isEqualTo(b.hashCode());
|
||||
assertThat(a.toString()).contains("CreateBeneficiaireEffectifRequest");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package dev.lions.unionflow.server.api.dto.kyc.request;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import jakarta.validation.ConstraintViolation;
|
||||
import jakarta.validation.Validation;
|
||||
import jakarta.validation.Validator;
|
||||
import jakarta.validation.ValidatorFactory;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Set;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class UpdateBeneficiaireEffectifRequestTest {
|
||||
|
||||
private Validator validator;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
|
||||
validator = factory.getValidator();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuilder_AllFields() {
|
||||
UpdateBeneficiaireEffectifRequest req = UpdateBeneficiaireEffectifRequest.builder()
|
||||
.nom("Doe").prenoms("Jane")
|
||||
.dateNaissance(LocalDate.of(1990, 6, 1))
|
||||
.lieuNaissance("Dakar")
|
||||
.nationalite("SEN").paysResidence("USA")
|
||||
.pourcentageCapital(new BigDecimal("45"))
|
||||
.pourcentageDroitsVote(new BigDecimal("50"))
|
||||
.natureControle("DROITS_VOTE")
|
||||
.estPep(false).pepCategorie("EX-PEP").pepPays("SEN").pepFonction("Ex-député")
|
||||
.presenceListesSanctions(false).detailsListesSanctions("RAS")
|
||||
.build();
|
||||
assertThat(req.nom()).isEqualTo("Doe");
|
||||
assertThat(req.prenoms()).isEqualTo("Jane");
|
||||
assertThat(req.dateNaissance()).isEqualTo(LocalDate.of(1990, 6, 1));
|
||||
assertThat(req.lieuNaissance()).isEqualTo("Dakar");
|
||||
assertThat(req.nationalite()).isEqualTo("SEN");
|
||||
assertThat(req.paysResidence()).isEqualTo("USA");
|
||||
assertThat(req.pourcentageCapital()).isEqualByComparingTo("45");
|
||||
assertThat(req.pourcentageDroitsVote()).isEqualByComparingTo("50");
|
||||
assertThat(req.natureControle()).isEqualTo("DROITS_VOTE");
|
||||
assertThat(req.estPep()).isFalse();
|
||||
assertThat(req.pepCategorie()).isEqualTo("EX-PEP");
|
||||
assertThat(req.pepPays()).isEqualTo("SEN");
|
||||
assertThat(req.pepFonction()).isEqualTo("Ex-député");
|
||||
assertThat(req.presenceListesSanctions()).isFalse();
|
||||
assertThat(req.detailsListesSanctions()).isEqualTo("RAS");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuilder_VideValide() {
|
||||
UpdateBeneficiaireEffectifRequest req = UpdateBeneficiaireEffectifRequest.builder().build();
|
||||
Set<ConstraintViolation<UpdateBeneficiaireEffectifRequest>> v = validator.validate(req);
|
||||
assertThat(v).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_PourcentageDepasse100() {
|
||||
UpdateBeneficiaireEffectifRequest req = UpdateBeneficiaireEffectifRequest.builder()
|
||||
.pourcentageCapital(new BigDecimal("110")).build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("pourcentageCapital"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_NationaliteFormatInvalide() {
|
||||
UpdateBeneficiaireEffectifRequest req = UpdateBeneficiaireEffectifRequest.builder()
|
||||
.nationalite("FR").build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("nationalite"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_NatureControleInvalide() {
|
||||
UpdateBeneficiaireEffectifRequest req = UpdateBeneficiaireEffectifRequest.builder()
|
||||
.natureControle("INVALIDE").build();
|
||||
assertThat(validator.validate(req))
|
||||
.anyMatch(v -> v.getPropertyPath().toString().equals("natureControle"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidation_NatureControleVideAccepte() {
|
||||
UpdateBeneficiaireEffectifRequest req = UpdateBeneficiaireEffectifRequest.builder()
|
||||
.natureControle("").build();
|
||||
assertThat(validator.validate(req))
|
||||
.noneMatch(v -> v.getPropertyPath().toString().equals("natureControle"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEqualsHashCodeToString() {
|
||||
UpdateBeneficiaireEffectifRequest a = UpdateBeneficiaireEffectifRequest.builder()
|
||||
.nom("X").build();
|
||||
UpdateBeneficiaireEffectifRequest b = UpdateBeneficiaireEffectifRequest.builder()
|
||||
.nom("X").build();
|
||||
assertThat(a).isEqualTo(b);
|
||||
assertThat(a.hashCode()).isEqualTo(b.hashCode());
|
||||
assertThat(a.toString()).contains("UpdateBeneficiaireEffectifRequest");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package dev.lions.unionflow.server.api.dto.kyc.response;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import dev.lions.unionflow.server.api.enums.membre.TypePieceIdentite;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class BeneficiaireEffectifResponseTest {
|
||||
|
||||
@Test
|
||||
void testBuilder_AllFields() {
|
||||
UUID id = UUID.randomUUID();
|
||||
UUID kyc = UUID.randomUUID();
|
||||
UUID org = UUID.randomUUID();
|
||||
UUID membre = UUID.randomUUID();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
BeneficiaireEffectifResponse r = BeneficiaireEffectifResponse.builder()
|
||||
.id(id).kycDossierId(kyc).organisationCibleId(org).membreId(membre)
|
||||
.nom("Test").prenoms("User")
|
||||
.dateNaissance(LocalDate.of(1990, 1, 1)).lieuNaissance("Abidjan")
|
||||
.nationalite("CIV").paysResidence("FRA")
|
||||
.typePieceIdentite(TypePieceIdentite.PASSEPORT)
|
||||
.numeroPieceIdentite("AB123").dateExpirationPiece(LocalDate.of(2030, 1, 1))
|
||||
.pourcentageCapital(new BigDecimal("25"))
|
||||
.pourcentageDroitsVote(new BigDecimal("30"))
|
||||
.natureControle("DETENTION_CAPITAL")
|
||||
.estPep(true).pepCategorie("MIN").pepPays("CIV").pepFonction("Min")
|
||||
.presenceListesSanctions(false).detailsListesSanctions("")
|
||||
.dateCreation(now).dateModification(now).actif(true)
|
||||
.build();
|
||||
|
||||
assertThat(r.id()).isEqualTo(id);
|
||||
assertThat(r.kycDossierId()).isEqualTo(kyc);
|
||||
assertThat(r.organisationCibleId()).isEqualTo(org);
|
||||
assertThat(r.membreId()).isEqualTo(membre);
|
||||
assertThat(r.nom()).isEqualTo("Test");
|
||||
assertThat(r.prenoms()).isEqualTo("User");
|
||||
assertThat(r.dateNaissance()).isEqualTo(LocalDate.of(1990, 1, 1));
|
||||
assertThat(r.lieuNaissance()).isEqualTo("Abidjan");
|
||||
assertThat(r.nationalite()).isEqualTo("CIV");
|
||||
assertThat(r.paysResidence()).isEqualTo("FRA");
|
||||
assertThat(r.typePieceIdentite()).isEqualTo(TypePieceIdentite.PASSEPORT);
|
||||
assertThat(r.numeroPieceIdentite()).isEqualTo("AB123");
|
||||
assertThat(r.dateExpirationPiece()).isEqualTo(LocalDate.of(2030, 1, 1));
|
||||
assertThat(r.pourcentageCapital()).isEqualByComparingTo("25");
|
||||
assertThat(r.pourcentageDroitsVote()).isEqualByComparingTo("30");
|
||||
assertThat(r.natureControle()).isEqualTo("DETENTION_CAPITAL");
|
||||
assertThat(r.estPep()).isTrue();
|
||||
assertThat(r.pepCategorie()).isEqualTo("MIN");
|
||||
assertThat(r.pepPays()).isEqualTo("CIV");
|
||||
assertThat(r.pepFonction()).isEqualTo("Min");
|
||||
assertThat(r.presenceListesSanctions()).isFalse();
|
||||
assertThat(r.detailsListesSanctions()).isEqualTo("");
|
||||
assertThat(r.dateCreation()).isEqualTo(now);
|
||||
assertThat(r.dateModification()).isEqualTo(now);
|
||||
assertThat(r.actif()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuilder_NullFields() {
|
||||
BeneficiaireEffectifResponse r = BeneficiaireEffectifResponse.builder().build();
|
||||
assertThat(r.id()).isNull();
|
||||
assertThat(r.actif()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEqualsHashCodeToString() {
|
||||
UUID id = UUID.randomUUID();
|
||||
BeneficiaireEffectifResponse a = BeneficiaireEffectifResponse.builder().id(id).build();
|
||||
BeneficiaireEffectifResponse b = BeneficiaireEffectifResponse.builder().id(id).build();
|
||||
assertThat(a).isEqualTo(b);
|
||||
assertThat(a.hashCode()).isEqualTo(b.hashCode());
|
||||
assertThat(a.toString()).contains("BeneficiaireEffectifResponse");
|
||||
}
|
||||
}
|
||||
@@ -255,4 +255,49 @@ class UpdateOrganisationRequestTest {
|
||||
assertThat(toString).contains("TTO");
|
||||
assertThat(toString).contains("INACTIF");
|
||||
}
|
||||
|
||||
// ──────────────────────────────────────────────────────────────────────
|
||||
// Sprint 10 — referentielComptable + complianceOfficerId
|
||||
// ──────────────────────────────────────────────────────────────────────
|
||||
|
||||
@Test
|
||||
void testReferentielComptable_ValeursValides() {
|
||||
for (String r : new String[] {"SYSCOHADA", "SYCEBNL", "PCSFD_UMOA"}) {
|
||||
UpdateOrganisationRequest req = UpdateOrganisationRequest.builder()
|
||||
.nom("Org").email("x@y.z").referentielComptable(r).build();
|
||||
Set<ConstraintViolation<UpdateOrganisationRequest>> violations = validator.validate(req);
|
||||
assertThat(violations).noneMatch(
|
||||
v -> v.getPropertyPath().toString().equals("referentielComptable"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testReferentielComptable_VideAccepte() {
|
||||
UpdateOrganisationRequest req = UpdateOrganisationRequest.builder()
|
||||
.nom("Org").email("x@y.z").referentielComptable("").build();
|
||||
Set<ConstraintViolation<UpdateOrganisationRequest>> violations = validator.validate(req);
|
||||
assertThat(violations).noneMatch(
|
||||
v -> v.getPropertyPath().toString().equals("referentielComptable"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testReferentielComptable_Invalide() {
|
||||
UpdateOrganisationRequest req = UpdateOrganisationRequest.builder()
|
||||
.nom("Org").email("x@y.z").referentielComptable("IFRS").build();
|
||||
Set<ConstraintViolation<UpdateOrganisationRequest>> violations = validator.validate(req);
|
||||
assertThat(violations).anyMatch(
|
||||
v -> v.getPropertyPath().toString().equals("referentielComptable"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testComplianceOfficerId_Optionnel() {
|
||||
java.util.UUID id = java.util.UUID.randomUUID();
|
||||
UpdateOrganisationRequest req = UpdateOrganisationRequest.builder()
|
||||
.nom("Org").email("x@y.z").complianceOfficerId(id).build();
|
||||
assertThat(req.complianceOfficerId()).isEqualTo(id);
|
||||
|
||||
UpdateOrganisationRequest reqNull = UpdateOrganisationRequest.builder()
|
||||
.nom("Org").email("x@y.z").build();
|
||||
assertThat(reqNull.complianceOfficerId()).isNull();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user