刘光辉
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.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"));
    }
}