package com.ruoyi.order.service.impl;
|
|
import com.ruoyi.order.api.model.TChargingOrderRefund;
|
import org.junit.jupiter.api.Test;
|
|
import java.math.BigDecimal;
|
import java.util.Arrays;
|
import java.util.Collections;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
class TChargingOrderServiceImplRefundableAmountTest {
|
|
@Test
|
void completionRefundDoesNotReduceManualRefundableAmount() {
|
TChargingOrderRefund completionRefund = refund("充电完成退款", "2.25");
|
|
BigDecimal refundableAmount = TChargingOrderServiceImpl.calculateManualRefundableAmount(
|
new BigDecimal("26.75"), Collections.singletonList(completionRefund));
|
|
assertEquals(new BigDecimal("26.75"), refundableAmount);
|
}
|
|
@Test
|
void onlySuccessfulManualRefundReducesManualRefundableAmount() {
|
TChargingOrderRefund completionRefund = refund("充电完成退款", "2.25");
|
TChargingOrderRefund manualRefund = refund("后台退款", "5.00");
|
|
BigDecimal refundableAmount = TChargingOrderServiceImpl.calculateManualRefundableAmount(
|
new BigDecimal("26.75"), Arrays.asList(completionRefund, manualRefund));
|
|
assertEquals(new BigDecimal("21.75"), refundableAmount);
|
}
|
|
@Test
|
void specialRefundForCombinedPaymentOnlyUsesThirdPartyAmount() {
|
BigDecimal refundableAmount = TChargingOrderServiceImpl.calculateSpecialRefundableAmount(
|
new BigDecimal("4.00"), new BigDecimal("2.00"), BigDecimal.ZERO);
|
|
assertEquals(new BigDecimal("2.00"), refundableAmount);
|
}
|
|
@Test
|
void previousThirdPartyRefundReducesSpecialRefundableAmount() {
|
BigDecimal refundableAmount = TChargingOrderServiceImpl.calculateSpecialRefundableAmount(
|
new BigDecimal("4.00"), new BigDecimal("2.00"), new BigDecimal("0.50"));
|
|
assertEquals(new BigDecimal("1.50"), refundableAmount);
|
}
|
|
private TChargingOrderRefund refund(String title, String amount) {
|
TChargingOrderRefund refund = new TChargingOrderRefund();
|
refund.setRefundTitle(title);
|
refund.setRefundAmount(new BigDecimal(amount));
|
return refund;
|
}
|
}
|