diff --git a/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/funds/statistics/FundsStatisticsServiceImplTest.java b/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/funds/statistics/FundsStatisticsServiceImplTest.java new file mode 100644 index 000000000..e5a52f753 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/test/java/com/cf/imes/module/system/service/funds/statistics/FundsStatisticsServiceImplTest.java @@ -0,0 +1,99 @@ +package com.cf.imes.module.system.service.funds.statistics; + +import com.cf.imes.framework.common.enums.StatisticsUnit; +import com.cf.imes.framework.common.util.i18n.core.util.I18nUtils; +import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; +import com.cf.imes.framework.security.test.WithMockLoginUser; +import com.cf.imes.framework.test.core.ut.BaseDbAndRedisUnitTest; +import com.cf.imes.module.system.controller.admin.funds.organamount.vo.OrganFundsStatisticsReqVO; +import com.cf.imes.module.system.controller.admin.statistics.vo.OrgStatusGroupStatisticsReqVO; +import com.cf.imes.module.system.dal.dataobject.incomeandexpense.IncomeExpenseDetailsDO; +import com.cf.imes.module.system.dal.mysql.incomeandexpense.IncomeExpenseDetailsMapper; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +import static com.cf.imes.framework.test.core.util.RandomUtils.randomPojo; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * + * + * @author Gqr + * @since 2025/12/31 15:20 + */ +@Import(FundsStatisticsServiceImpl.class) +public class FundsStatisticsServiceImplTest extends BaseDbAndRedisUnitTest { + + @Resource + private FundsStatisticsServiceImpl fundsStatisticsService; + + @MockitoBean + private I18nUtils i18nUtils; + + @Resource + private IncomeExpenseDetailsMapper incomeExpenseDetailsMapper; + + @Test + @WithMockLoginUser(organId = 1L) + void should_return_consumption_trend_with_zero_filling() { + Long organId = SecurityFrameworkUtils.getUserOrganId(); + + OrgStatusGroupStatisticsReqVO reqVO = new OrgStatusGroupStatisticsReqVO(); + reqVO.setUnit(StatisticsUnit.DAY.getValue()); + reqVO.setCreateTime(new LocalDate[]{ + LocalDate.now().minusDays(2), + LocalDate.now().plusDays(1) + }); + + IncomeExpenseDetailsDO pojo1 = randomPojo(IncomeExpenseDetailsDO.class, o -> { + o.setOrganId(organId); + o.setAmount(new BigDecimal("100")); + o.setCreateTime(LocalDateTime.now().minusDays(2)); + }); + IncomeExpenseDetailsDO pojo2 = randomPojo(IncomeExpenseDetailsDO.class, o -> { + o.setOrganId(organId); + o.setAmount(new BigDecimal("200")); + o.setCreateTime(LocalDateTime.now()); + }); + IncomeExpenseDetailsDO pojo3 = randomPojo(IncomeExpenseDetailsDO.class, o -> { + o.setAmount(new BigDecimal("200")); + o.setCreateTime(LocalDateTime.now()); + }); + + incomeExpenseDetailsMapper.insert(pojo1); + incomeExpenseDetailsMapper.insert(pojo2); + incomeExpenseDetailsMapper.insert(pojo3); + + // when query + Map result = + fundsStatisticsService.getFunsTradeTypeGroupStatistics(reqVO); + + // then + List xAxis = (List) result.get("dateList"); + List series = (List) result.get("series"); + + assertEquals(4, xAxis.size()); + + Map seriesItem = (Map) series.get(0); + BigDecimal[] data = (BigDecimal[]) seriesItem.get("data"); + + assertArrayEquals( + new BigDecimal[]{ + new BigDecimal("100.00"), + BigDecimal.ZERO, + new BigDecimal("400.00"), + BigDecimal.ZERO, + }, + data + ); + } +}