68 lines
2.8 KiB
Java
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");
|
|
}
|
|
}
|