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"));
|
}
|
}
|
}
|