package com.ruoyi.order.service.impl; import org.junit.jupiter.api.Test; import java.math.BigDecimal; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; class ChargingBillIncomeIndexTest { @Test void calculatesIncomeFromSettlementRowsWithoutSharingThirdPartyServiceFees() { TChargingBillServiceImpl service = new TChargingBillServiceImpl(); Map ratios = new HashMap<>(); ratios.put(1, new BigDecimal("15")); ratios.put(2, new BigDecimal("50")); Map> incomeIndex = service.buildChargingBillIncomeIndex( Arrays.asList( incomeRow(1, "2026-06", "7.97", "1.85"), incomeRow(2, "2026-06", "2.00", "0.00") ), ratios ); assertEquals(new BigDecimal("7.69"), incomeIndex.get("1|2026-06").get("platformIncome")); assertEquals(new BigDecimal("0.28"), incomeIndex.get("1|2026-06").get("partnerIncome")); assertEquals(new BigDecimal("2.00"), incomeIndex.get("2|2026-06").get("platformIncome")); assertEquals(new BigDecimal("0.00"), incomeIndex.get("2|2026-06").get("partnerIncome")); assertEquals(new BigDecimal("9.69"), incomeIndex.get("0|2026-06").get("platformIncome")); assertEquals(new BigDecimal("0.28"), incomeIndex.get("0|2026-06").get("partnerIncome")); } @Test void givesAllPaidAmountToPlatformWhenSharingIsDisabled() { TChargingBillServiceImpl service = new TChargingBillServiceImpl(); Map ratios = new HashMap<>(); ratios.put(1, BigDecimal.ZERO); Map> incomeIndex = service.buildChargingBillIncomeIndex( Arrays.asList(incomeRow(1, "2026-07", "12.34", "2.00")), ratios ); assertEquals(new BigDecimal("12.34"), incomeIndex.get("1|2026-07").get("platformIncome")); assertEquals(new BigDecimal("0"), incomeIndex.get("1|2026-07").get("partnerIncome")); } private Map incomeRow(Integer siteId, String billingCycle, String paymentAmount, String commissionableServiceFee) { Map row = new HashMap<>(); row.put("site_id", siteId); row.put("billingCycle", billingCycle); row.put("payment_amount", new BigDecimal(paymentAmount)); row.put("commissionable_service_fee", new BigDecimal(commissionableServiceFee)); return row; } }