package jnpf.flowable.service.dev;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import jnpf.flowable.model.templatenode.nodejson.NodeModel;
|
import jnpf.permission.entity.UserEntity;
|
import org.junit.Test;
|
import java.util.*;
|
import static org.junit.Assert.*;
|
|
public class DevApprovalFillTest {
|
private JSONObject field(String key, String id) {
|
return JSON.parseObject("{\"__vModel__\":\"" + id + "\",\"__config__\":{\"jnpfKey\":\"" + key + "\"}}");
|
}
|
@Test public void usesSignerAndNativeValueTypesWithoutInventingReferencesOrFiles() {
|
UserEntity signer = new UserEntity(); signer.setId("signed-user"); signer.setOrganizeId("department"); signer.setPositionId("post1,post2");
|
assertEquals("已输入", DevApprovalFill.value(field("input", "reason"), signer, "sign"));
|
assertNull(DevApprovalFill.value(field("input", "wenjian_id"), signer, "sign"));
|
assertEquals("sign", DevApprovalFill.value(field("input", "biz_sign"), signer, "sign"));
|
assertEquals("signed-user", DevApprovalFill.value(field("userSelect", "reviewer_id"), signer, "sign"));
|
JSONObject organization = field("organizeSelect", "scope_id"); organization.put("multiple", true);
|
assertEquals(List.of("department"), DevApprovalFill.value(organization, signer, "sign"));
|
assertEquals("post1", DevApprovalFill.value(field("posSelect", "post_id"), signer, "sign"));
|
assertTrue(DevApprovalFill.value(field("datePicker", "date"), signer, "sign") instanceof Long);
|
assertNull(DevApprovalFill.value(field("uploadFile", "attachment"), signer, "sign"));
|
assertNull(DevApprovalFill.value(field("popupSelect", "record_id"), signer, "sign"));
|
}
|
@Test public void fillsExistingChildRowsPreservesRealValuesAndUsesLiveDictionaryCodes() {
|
NodeModel node = new NodeModel(); node.setFormOperates(List.of(
|
Map.of("id", "rows-reason", "required", true), Map.of("id", "choice", "required", true)));
|
String schema = "{\"fields\":[{\"__vModel__\":\"rows\",\"__config__\":{\"jnpfKey\":\"table\",\"children\":[{\"__vModel__\":\"reason\",\"__config__\":{\"jnpfKey\":\"input\"}}]}},{\"__vModel__\":\"choice\",\"props\":{\"value\":\"enCode\"},\"__config__\":{\"jnpfKey\":\"checkbox\",\"dataType\":\"dictionary\",\"dictionaryType\":\"dict\"}}]}";
|
Map<String,Object> data = JSON.parseObject("{\"rows\":[{\"reason\":\"真实原因\"},{\"reason\":\"\"}],\"choice\":[]}");
|
var problems = DevApprovalFill.fill(node, schema, data, new UserEntity(), "sign",
|
type -> JSON.parseArray("[{\"id\":\"internal\",\"enCode\":\"yes\"}]"));
|
assertTrue(problems.isEmpty()); assertEquals(List.of("yes"), data.get("choice"));
|
List<?> rows = (List<?>) data.get("rows");
|
assertEquals("真实原因", ((Map<?,?>) rows.get(0)).get("reason"));
|
assertEquals("已输入", ((Map<?,?>) rows.get(1)).get("reason"));
|
data.put("rows", List.of());
|
assertTrue(DevApprovalFill.fill(node, schema, data, new UserEntity(), "sign", type -> null).isEmpty());
|
assertEquals(List.of(), data.get("rows"));
|
}
|
}
|