刘光辉
5 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package jnpf.dmsController.print;
 
import jnpf.dmsEntity.print.form.DmsPrintOperationQuery;
import jnpf.dmsEntity.print.vo.DmsPrintOperationLogVO;
import jnpf.dmsService.DmsPrintOperationLogService;
import org.junit.jupiter.api.Test;
import org.springframework.mock.web.MockHttpServletResponse;
 
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
 
class DmsPrintOperationLogControllerTest {
 
    @Test
    void exportWritesUtf8BomAndCsvThroughSingleOutputStream() throws Exception {
        DmsPrintOperationLogVO row = new DmsPrintOperationLogVO();
        row.setDocumentCode("BG-001");
        row.setDocumentName("检验,报告");
        row.setPrintType("RECORD_DOCUMENT");
        row.setOperatorName("张三");
        row.setCopies(1);
        DmsPrintOperationLogService service = new DmsPrintOperationLogService(null, null, null) {
            @Override
            public List<DmsPrintOperationLogVO> export(DmsPrintOperationQuery query) {
                return Collections.singletonList(row);
            }
        };
 
        MockHttpServletResponse response = new MockHttpServletResponse();
        new DmsPrintOperationLogController(service).export(new DmsPrintOperationQuery(), response);
 
        byte[] content = response.getContentAsByteArray();
        assertEquals((byte) 0xEF, content[0]);
        assertEquals((byte) 0xBB, content[1]);
        assertEquals((byte) 0xBF, content[2]);
        String csv = new String(content, StandardCharsets.UTF_8);
        assertTrue(csv.startsWith("\uFEFF编号,名称"));
        assertTrue(csv.contains("\"检验,报告\""));
    }
}