package cn.iocoder.yudao.module.mes.service.energy;
|
|
import cn.iocoder.yudao.module.mes.controller.admin.energy.vo.*;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.*;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.springframework.mock.web.MockHttpServletResponse;
|
import java.io.ByteArrayInputStream;
|
import java.time.LocalDate;
|
import java.util.List;
|
import static org.junit.jupiter.api.Assertions.*;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.Mockito.*;
|
|
@ExtendWith(MockitoExtension.class)
|
class EnergyExportServiceTest {
|
@Mock EnergyRecordService recordService;
|
@InjectMocks EnergyExportService exportService;
|
@Test void analysisProducesReadableWorkbookWithScopeAndSeparateUnits() throws Exception {
|
when(recordService.analysis(any())).thenReturn(EnergyRecordService.aggregate(List.of()));
|
var req = new EnergyAnalysisReqVO(); req.setStartDate(LocalDate.of(2026,10,1)); req.setEndDate(LocalDate.of(2026,10,12));
|
var response = new MockHttpServletResponse(); exportService.analysis(req, response);
|
try (var workbook = WorkbookFactory.create(new ByteArrayInputStream(response.getContentAsByteArray()))) {
|
assertEquals(4, workbook.getNumberOfSheets());
|
assertEquals("统计口径", workbook.getSheetAt(0).getSheetName());
|
assertEquals("2026-10-01", workbook.getSheetAt(0).getRow(1).getCell(1).getStringCellValue());
|
assertEquals("m³", workbook.getSheetAt(1).getRow(1).getCell(2).getStringCellValue());
|
assertEquals("kWh", workbook.getSheetAt(1).getRow(2).getCell(2).getStringCellValue());
|
assertEquals("t", workbook.getSheetAt(1).getRow(3).getCell(2).getStringCellValue());
|
assertEquals(0, workbook.getSheetAt(1).getRow(1).getCell(4).getNumericCellValue());
|
}
|
assertTrue(response.getContentType().contains("spreadsheetml"));
|
}
|
@Test void oversizedLedgerExportFailsBeforeWritingResponse() {
|
when(recordService.page(any())).thenReturn(new PageResult<>(List.of(), 50_001L));
|
var response = new MockHttpServletResponse();
|
assertThrows(RuntimeException.class, () -> exportService.records(new EnergyRecordPageReqVO(), response));
|
assertEquals(0, response.getContentAsByteArray().length);
|
}
|
}
|