刘光辉
8 小时以前 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package jnpf.base.service;
 
import jnpf.base.entity.ModuleButtonEntity;
import jnpf.base.entity.ModuleEntity;
import jnpf.base.entity.VisualdevEntity;
import jnpf.base.model.button.ButtonListVO;
import jnpf.flowable.TemplateApi;
import jnpf.onlinedev.VisualdevOnlineApi;
import org.junit.Test;
 
import java.util.Collections;
import java.util.List;
 
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
 
public class MenuActionCandidateServiceTest {
 
    @Test
    public void extractsVisibleBuiltInAndCustomButtonsWithoutDuplicates() {
        String columns = "{\"btnsList\":[{\"value\":\"add\",\"label\":\"新增\",\"show\":true},"
                + "{\"value\":\"download\",\"label\":\"导出\",\"show\":false}],"
                + "\"columnBtnsList\":[{\"value\":\"edit\",\"label\":\"编辑\",\"show\":true}],"
                + "\"customBtnsList\":[{\"value\":\"order.approve\",\"label\":\"审批\"},"
                + "{\"value\":\"btn_add\",\"label\":\"重复\"}]}";
 
        List<ButtonListVO> result = MenuActionCandidateService.extractCandidates(columns, Collections.emptySet(), null);
 
        assertEquals(3, result.size());
        assertEquals("btn_add", result.get(0).getEnCode());
        assertEquals("新增", result.get(0).getFullName());
        assertEquals("btn_edit", result.get(1).getEnCode());
        assertEquals("order.approve", result.get(2).getEnCode());
        assertEquals("审批", result.get(2).getFullName());
    }
 
    @Test
    public void resolvesFlowFormAndAppButtonsAndExcludesExistingCodes() {
        ModuleService modules = mock(ModuleService.class);
        ModuleButtonService buttons = mock(ModuleButtonService.class);
        TemplateApi templates = mock(TemplateApi.class);
        VisualdevOnlineApi forms = mock(VisualdevOnlineApi.class);
        MenuActionCandidateService service = new MenuActionCandidateService(modules, buttons, templates, forms);
        ModuleEntity menu = new ModuleEntity();
        menu.setType(9);
        menu.setCategory("App");
        menu.setPropertyJson("{\"moduleId\":\"flow-1\"}");
        when(modules.getInfo("menu-1")).thenReturn(menu);
        when(templates.getFormByFlowId("flow-1")).thenReturn("form-1");
        VisualdevEntity form = new VisualdevEntity();
        form.setColumnData("{\"btnsList\":[{\"value\":\"web\",\"label\":\"Web按钮\"}]}");
        form.setAppColumnData("{\"btnsList\":[{\"value\":\"add\",\"label\":\"新增\"}],"
                + "\"customBtnsList\":[{\"value\":\"order.approve\",\"label\":\"审批\"}]}");
        when(forms.getReleaseInfo("form-1")).thenReturn(form);
        ModuleButtonEntity existing = new ModuleButtonEntity();
        existing.setEnCode("btn_add");
        when(buttons.getListByModuleIds("menu-1")).thenReturn(Collections.singletonList(existing));
 
        List<ButtonListVO> result = service.getCandidates("menu-1", "审批");
 
        assertEquals(1, result.size());
        assertEquals("order.approve", result.get(0).getEnCode());
        verify(templates).getFormByFlowId("flow-1");
        verify(forms).getReleaseInfo("form-1");
    }
 
    @Test
    public void resolvesWebFormButtonsFromLinkedForm() {
        ModuleService modules = mock(ModuleService.class);
        ModuleButtonService buttons = mock(ModuleButtonService.class);
        TemplateApi templates = mock(TemplateApi.class);
        VisualdevOnlineApi forms = mock(VisualdevOnlineApi.class);
        MenuActionCandidateService service = new MenuActionCandidateService(modules, buttons, templates, forms);
        ModuleEntity menu = new ModuleEntity();
        menu.setType(3);
        menu.setCategory("Web");
        menu.setPropertyJson("{\"moduleId\":\"form-2\"}");
        when(modules.getInfo("menu-2")).thenReturn(menu);
        VisualdevEntity form = new VisualdevEntity();
        form.setColumnData("{\"columnBtnsList\":[{\"value\":\"edit\",\"label\":\"编辑\",\"show\":true}]}");
        when(forms.getReleaseInfo("form-2")).thenReturn(form);
        when(buttons.getListByModuleIds("menu-2")).thenReturn(Collections.emptyList());
 
        List<ButtonListVO> result = service.getCandidates("menu-2", null);
 
        assertEquals(1, result.size());
        assertEquals("btn_edit", result.get(0).getEnCode());
        verify(forms).getReleaseInfo("form-2");
    }
}