刘光辉
7 小时以前 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
package jnpf.message.service;
import jnpf.message.entity.MessageTemplateConfigEntity;
import jnpf.message.mapper.DmsUpgradeMessageMapper;
import jnpf.message.model.DmsUpgradeMessage;
import org.junit.jupiter.api.Test;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.util.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
class DmsUpgradeMessageServiceTest {
    @Test void duplicateUserOrRetryNeverInsertsSecondMessage() {
        var mapper=mock(DmsUpgradeMessageMapper.class); var service=new DmsUpgradeMessageService(mapper);
        var template=new MessageTemplateConfigEntity();template.setTitle("{@DocumentNo}");template.setContent("文件 {@DocumentName}");
        when(mapper.templates("tenant")).thenReturn(List.of(template));
        when(mapper.claimDelivery("tenant","task","user")).thenReturn(1,0);
        when(mapper.insertMessage(any(),eq("tenant"))).thenReturn(1);
        var request=new DmsUpgradeMessage();request.setTenantId("tenant");request.setTaskId("task");
        request.setToUserIds(List.of("user","user"));request.setParameters(Map.of("DocumentNo","D-1","DocumentName","<文件>"));
        TransactionSynchronizationManager.initSynchronization();
        try {
            assertTrue(service.send(request));assertTrue(service.send(request));
            verify(mapper,times(1)).insertMessage(argThat(m -> m.getBodyText().contains("&lt;文件&gt;")),eq("tenant"));
        } finally {TransactionSynchronizationManager.clearSynchronization();}
    }
    @Test void unknownPlaceholderCannotSilentlySendAndValuesAreNotReinterpreted() {
        assertThrows(RuntimeException.class,()->DmsUpgradeMessageService.render("{@Missing}",Map.of(),false));
        assertEquals("{@Other}",DmsUpgradeMessageService.render("{@DocumentName}",Map.of("DocumentName","{@Other}"),false));
    }
}