package jnpf.flowable.util;
|
|
import org.junit.Test;
|
|
import java.util.Arrays;
|
import java.time.LocalDate;
|
import java.time.ZoneId;
|
import java.util.Collections;
|
import java.util.HashMap;
|
import java.util.LinkedHashMap;
|
import java.util.Map;
|
|
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertNull;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.when;
|
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.any;
|
|
import jnpf.base.entity.DictionaryDataEntity;
|
import jnpf.base.model.datainterface.DataInterfacePage;
|
import jnpf.permission.entity.UserEntity;
|
|
public class FlowAuditTitleUtilTest {
|
|
private static final String FORM = "{\"fields\":["
|
+ "{\"config\":{\"children\":[{\"vModel\":\"name\",\"config\":{\"biz_log_enabled\":true}}]}},"
|
+ "{\"vModel\":\"tableFieldA\",\"config\":{\"jnpfKey\":\"table\",\"children\":["
|
+ "{\"vModel\":\"batch\",\"config\":{\"biz_log_enabled\":true}},"
|
+ "{\"vModel\":\"memo\",\"config\":{\"biz_log_enabled\":true}},"
|
+ "{\"vModel\":\"ignored\",\"config\":{\"biz_log_enabled\":false}}]}},"
|
+ "{\"vModel\":\"biz_sign\",\"config\":{\"biz_log_enabled\":true}}]}";
|
|
@Test
|
public void usesOnlyConfiguredValuesFromFirstChildRow() {
|
Map<String, Object> first = new LinkedHashMap<>();
|
first.put("batch", "B-01");
|
first.put("memo", "");
|
first.put("ignored", "hidden");
|
Map<String, Object> second = new LinkedHashMap<>();
|
second.put("batch", "B-02");
|
second.put("memo", "second row");
|
Map<String, Object> data = new HashMap<>();
|
data.put("name", "申请单");
|
data.put("tableFieldA", Arrays.asList(first, second));
|
data.put("biz_sign", "secret");
|
|
assertEquals("申请单/B-01", FlowAuditTitleUtil.suffix(FORM, data));
|
}
|
|
@Test
|
public void doesNotFallbackToSecondRowWhenFirstIsBlank() {
|
Map<String, Object> data = new HashMap<>();
|
data.put("tableFieldA", Arrays.asList(Collections.emptyMap(),
|
Collections.singletonMap("batch", "B-02")));
|
assertNull(FlowAuditTitleUtil.suffix(FORM, data));
|
}
|
|
@Test
|
public void appendsOnlyOnceToExistingTaskName() {
|
assertEquals("审核申请/申请单/B-01", FlowAuditTitleUtil.append("审核申请", "申请单/B-01"));
|
assertEquals("审核申请/申请单/B-01",
|
FlowAuditTitleUtil.append("审核申请/申请单/B-01", "申请单/B-01"));
|
assertEquals("审核申请", FlowAuditTitleUtil.append("审核申请", null));
|
}
|
|
@Test
|
public void resolvesUserDictionaryAndStaticSelectLabels() {
|
ServiceUtil service = mock(ServiceUtil.class);
|
UserEntity user = new UserEntity();
|
user.setId("u1");
|
user.setRealName("张三");
|
when(service.getUserName(Collections.singletonList("u1"))).thenReturn(Collections.singletonList(user));
|
DictionaryDataEntity dictionary = new DictionaryDataEntity();
|
dictionary.setId("d1");
|
dictionary.setFullName("已批准");
|
when(service.getDictionaryData("status")).thenReturn(Collections.singletonList(dictionary));
|
String form = "{\"fields\":["
|
+ "{\"vModel\":\"user\",\"config\":{\"jnpfKey\":\"userSelect\",\"biz_log_enabled\":true}},"
|
+ "{\"vModel\":\"status\",\"config\":{\"jnpfKey\":\"select\",\"dataType\":\"dictionary\",\"dictionaryType\":\"status\",\"biz_log_enabled\":true}},"
|
+ "{\"vModel\":\"grade\",\"config\":{\"jnpfKey\":\"select\",\"dataType\":\"static\",\"biz_log_enabled\":true},"
|
+ "\"props\":{\"value\":\"id\",\"label\":\"fullName\"},\"options\":[{\"id\":\"a\",\"fullName\":\"A级\"}]}]}";
|
Map<String, Object> data = new HashMap<>();
|
data.put("user", "u1");
|
data.put("status", "d1");
|
data.put("grade", "a");
|
assertEquals("张三/已批准/A级", FlowAuditTitleUtil.suffix(form, data,
|
new FlowAuditTitleValueResolver(service)));
|
}
|
|
@Test
|
public void resolvesPopupLabelAndFormatsDate() {
|
ServiceUtil service = mock(ServiceUtil.class);
|
when(service.getInterfaceRows(eq("items"), any(DataInterfacePage.class)))
|
.thenReturn(Collections.singletonList(Map.of("id", "p1", "name", "试剂一")));
|
String form = "{\"fields\":["
|
+ "{\"vModel\":\"item\",\"interfaceId\":\"items\",\"propsValue\":\"id\","
|
+ "\"relationField\":\"name\",\"config\":{\"jnpfKey\":\"popupSelect\",\"biz_log_enabled\":true}},"
|
+ "{\"vModel\":\"day\",\"format\":\"yyyy-MM-dd\","
|
+ "\"config\":{\"jnpfKey\":\"date\",\"biz_log_enabled\":true}}]}";
|
Map<String, Object> data = new HashMap<>();
|
data.put("item", "p1");
|
data.put("day", LocalDate.of(2024, 1, 2).atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
assertEquals("试剂一/2024-01-02", FlowAuditTitleUtil.suffix(form, data,
|
new FlowAuditTitleValueResolver(service)));
|
}
|
}
|