刘光辉
118 分钟以前 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
package jnpf.flowable.service;
 
import jnpf.dmsBusinessOccupancy.BusinessFileIneligibleException;
import jnpf.dmsBusinessOccupancy.BusinessFileEligibilityService.Reason;
import jnpf.flowable.mapper.DmsLifecycleNativeFormMapper;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
 
public class DmsLifecycleEligibilityMessagesTest {
    private final DmsLifecycleNativeFormMapper mapper = mock(DmsLifecycleNativeFormMapper.class);
 
    @Test public void readsOnlineTextAgainAndUsesLiteralFileNumber() {
        var failure = new BusinessFileIneligibleException("MM-$1\\006", List.of(Reason.FILE_OCCUPIED));
        when(mapper.eligibilityMessages("tenant", "FILE_OCCUPIED"))
                .thenReturn(List.of("文件【{number}】已有未完成申请"), List.of("请先完成【{number}】的申请"));
        assertEquals("文件【MM-$1\\006】已有未完成申请", DmsLifecycleEligibilityMessages.render(mapper, "tenant", failure));
        assertEquals("请先完成【MM-$1\\006】的申请", DmsLifecycleEligibilityMessages.render(mapper, "tenant", failure));
        verify(mapper, times(2)).eligibilityMessages("tenant", "FILE_OCCUPIED");
    }
 
    @Test public void retainsAllReasonsWithoutDisplayingMachineCodes() {
        var failure = new BusinessFileIneligibleException("A", List.of(Reason.PENDING_VERSION, Reason.FILE_OCCUPIED));
        when(mapper.eligibilityMessages("0", "PENDING_VERSION")).thenReturn(List.of("【{number}】存在待生效版本"));
        when(mapper.eligibilityMessages("0", "FILE_OCCUPIED")).thenReturn(List.of("【{number}】已有未完成申请"));
        assertEquals("【A】存在待生效版本\n【A】已有未完成申请", DmsLifecycleEligibilityMessages.render(mapper, "0", failure));
        assertEquals(List.of(Reason.PENDING_VERSION, Reason.FILE_OCCUPIED), failure.getReasons());
    }
 
    @Test public void missingAmbiguousAndUnavailableConfigurationNeverExposeInternalCodes() {
        var failure = new BusinessFileIneligibleException("A", List.of(Reason.FILE_OCCUPIED));
        when(mapper.eligibilityMessages("0", "FILE_OCCUPIED"))
                .thenReturn(List.of(), List.of("one", "two"))
                .thenThrow(new IllegalStateException("internal SQL"));
        for (int i = 0; i < 3; i++) {
            String text = DmsLifecycleEligibilityMessages.render(mapper, "0", failure);
            assertTrue(text.contains("【A】"));
            assertFalse(text.contains("FILE_OCCUPIED"));
            assertFalse(text.contains("internal SQL"));
        }
    }
}