Files
unionflow-server-impl-quarkus/src/test/java/dev/lions/unionflow/server/entity/IntentionPaiementBranchTest.java
2026-03-28 14:21:30 +00:00

68 lines
2.8 KiB
Java

package dev.lions.unionflow.server.entity;
import dev.lions.unionflow.server.api.enums.paiement.StatutIntentionPaiement;
import dev.lions.unionflow.server.api.enums.paiement.TypeObjetIntentionPaiement;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests pour {@link IntentionPaiement} — méthode onCreate().
*/
@DisplayName("IntentionPaiement — onCreate")
class IntentionPaiementBranchTest {
// ── onCreate() ────────────────────────────────────────────────────────────
@Test
@DisplayName("onCreate: dateExpiration déjà définie → conservée")
void onCreate_dateExpirationDejaDefinie_conservee() throws Exception {
IntentionPaiement ip = new IntentionPaiement();
ip.setMontantTotal(new BigDecimal("5000.00"));
ip.setTypeObjet(TypeObjetIntentionPaiement.COTISATION);
LocalDateTime expirationFixe = LocalDateTime.of(2025, 12, 31, 23, 59);
ip.setDateExpiration(expirationFixe);
Method onCreate = IntentionPaiement.class.getDeclaredMethod("onCreate");
onCreate.setAccessible(true);
onCreate.invoke(ip);
// dateExpiration doit rester la valeur fixée, pas être remplacée
assertThat(ip.getDateExpiration()).isEqualTo(expirationFixe);
// les autres defaults sont bien positionnés
assertThat(ip.getStatut()).isEqualTo(StatutIntentionPaiement.INITIEE);
assertThat(ip.getCodeDevise()).isEqualTo("XOF");
}
@Test
@DisplayName("onCreate: dateExpiration null → positionnée à now+30min")
void onCreate_dateExpirationNull_setToNowPlusTrente() throws Exception {
IntentionPaiement ip = new IntentionPaiement();
ip.setMontantTotal(new BigDecimal("5000.00"));
ip.setTypeObjet(TypeObjetIntentionPaiement.COTISATION);
ip.setStatut(null);
ip.setCodeDevise(null);
ip.setDateExpiration(null);
LocalDateTime avant = LocalDateTime.now();
Method onCreate = IntentionPaiement.class.getDeclaredMethod("onCreate");
onCreate.setAccessible(true);
onCreate.invoke(ip);
LocalDateTime apres = LocalDateTime.now();
assertThat(ip.getDateExpiration()).isNotNull();
assertThat(ip.getDateExpiration()).isAfterOrEqualTo(avant.plusMinutes(29));
assertThat(ip.getDateExpiration()).isBeforeOrEqualTo(apres.plusMinutes(31));
assertThat(ip.getStatut()).isEqualTo(StatutIntentionPaiement.INITIEE);
assertThat(ip.getCodeDevise()).isEqualTo("XOF");
}
}