liujie
2026-09-11 4f6f15b818704079ff2e4e4719b798f48d68a335
backend/src/test/java/com/tourguide/modules/finance/service/GuideBalanceSettlementServiceTest.java
@@ -67,6 +67,43 @@
        verify(balanceService, never()).credit(8L, new BigDecimal("90.00"));
    }
    @Test
    void shouldReverseSettledGuideEarningForRefund() {
        TourOrder order = dueOrder(LocalDateTime.now());
        order.setSettledAt(LocalDateTime.now());
        order.setAmount(new BigDecimal("100.00"));
        order.setPaymentAmount(new BigDecimal("100.00"));
        service.reverseRefund(order, BigDecimal.ZERO, new BigDecimal("100.00"));
        verify(balanceService).debitForRefund(8L, new BigDecimal("90.00"));
    }
    @Test
    void shouldReverseOnlyIncrementalAmountForPartialRefund() {
        TourOrder order = dueOrder(LocalDateTime.now());
        order.setSettledAt(LocalDateTime.now());
        order.setAmount(new BigDecimal("100.00"));
        order.setPaymentAmount(new BigDecimal("100.00"));
        service.reverseRefund(order, new BigDecimal("20.00"), new BigDecimal("50.00"));
        verify(balanceService).debitForRefund(8L, new BigDecimal("27.00"));
    }
    @Test
    void shouldReverseSettledTeamEarningForRefund() {
        TourOrder order = dueOrder(LocalDateTime.now());
        order.setSettledAt(LocalDateTime.now());
        order.setCommissionTeamId(6L);
        order.setAmount(new BigDecimal("100.00"));
        order.setPaymentAmount(new BigDecimal("100.00"));
        service.reverseRefund(order, BigDecimal.ZERO, new BigDecimal("100.00"));
        verify(balanceService).debitTeamForRefund(6L, new BigDecimal("90.00"));
    }
    private TourOrder dueOrder(LocalDateTime dueAt) {
        TourOrder order = new TourOrder();
        order.setId(10L);