package dev.lions.unionflow.server.entity; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @DisplayName("Paiement") class PaiementTest { private static Membre newMembre() { Membre m = new Membre(); m.setId(UUID.randomUUID()); m.setNumeroMembre("M1"); m.setPrenom("A"); m.setNom("B"); m.setEmail("a@test.com"); m.setDateNaissance(java.time.LocalDate.now()); return m; } @Test @DisplayName("getters/setters") void gettersSetters() { Paiement p = new Paiement(); p.setNumeroReference("PAY-2025-001"); p.setMontant(new BigDecimal("10000.00")); p.setCodeDevise("XOF"); p.setMethodePaiement("WAVE"); p.setStatutPaiement("VALIDE"); p.setDatePaiement(LocalDateTime.now()); p.setMembre(newMembre()); assertThat(p.getNumeroReference()).isEqualTo("PAY-2025-001"); assertThat(p.getMontant()).isEqualByComparingTo("10000.00"); assertThat(p.getCodeDevise()).isEqualTo("XOF"); assertThat(p.getStatutPaiement()).isEqualTo("VALIDE"); } @Test @DisplayName("genererNumeroReference") void genererNumeroReference() { String ref = Paiement.genererNumeroReference(); assertThat(ref).startsWith("PAY-").isNotNull(); } @Test @DisplayName("isValide et peutEtreModifie") void isValide_peutEtreModifie() { Paiement p = new Paiement(); p.setNumeroReference("X"); p.setMontant(BigDecimal.ONE); p.setCodeDevise("XOF"); p.setMethodePaiement("WAVE"); p.setMembre(newMembre()); p.setStatutPaiement("VALIDE"); assertThat(p.isValide()).isTrue(); assertThat(p.peutEtreModifie()).isFalse(); p.setStatutPaiement("EN_ATTENTE"); assertThat(p.peutEtreModifie()).isTrue(); } @Test @DisplayName("equals et hashCode") void equalsHashCode() { UUID id = UUID.randomUUID(); Membre m = newMembre(); Paiement a = new Paiement(); a.setId(id); a.setNumeroReference("REF-1"); a.setMontant(BigDecimal.ONE); a.setCodeDevise("XOF"); a.setMethodePaiement("WAVE"); a.setMembre(m); Paiement b = new Paiement(); b.setId(id); b.setNumeroReference("REF-1"); b.setMontant(BigDecimal.ONE); b.setCodeDevise("XOF"); b.setMethodePaiement("WAVE"); b.setMembre(m); assertThat(a).isEqualTo(b); assertThat(a.hashCode()).isEqualTo(b.hashCode()); } @Test @DisplayName("toString non null") void toString_nonNull() { Paiement p = new Paiement(); p.setNumeroReference("X"); p.setMontant(BigDecimal.ONE); p.setCodeDevise("XOF"); p.setMethodePaiement("WAVE"); p.setMembre(newMembre()); assertThat(p.toString()).isNotNull().isNotEmpty(); } }