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