package jnpf.elnController; import jnpf.base.ActionResult; import jnpf.elnEntity.ElnDocumentFileVo; import jnpf.util.context.SpringContext; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.support.StaticApplicationContext; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import java.lang.reflect.Method; import java.util.concurrent.atomic.AtomicReference; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class ElnTemplateFileControllerTest { @BeforeClass public static void setUpSpringContext() { SpringContext.setApplicationContext(new StaticApplicationContext()); } @Test public void exposesPinyinPathAndParameter() throws Exception { RequestMapping requestMapping = ElnTemplateFileController.class.getAnnotation(RequestMapping.class); Method method = ElnTemplateFileController.class.getMethod( "file", String.class, String.class); GetMapping getMapping = method.getAnnotation(GetMapping.class); RequestParam idParam = method.getParameters()[0].getAnnotation(RequestParam.class); RequestParam codeParam = method.getParameters()[1].getAnnotation(RequestParam.class); assertEquals("/dianzi_jilu_muban", requestMapping.value()[0]); assertEquals("/file", getMapping.value()[0]); assertEquals("jianyan_xiangmu", idParam.value()); assertEquals("jianyan_xiangmu_bianma", codeParam.value()); } @Test public void rejectsMissingTestWorkItem() { ElnTemplateFileController controller = new ElnTemplateFileController( (item, code) -> { throw new AssertionError("参数无效时不应调用 Service"); }); assertEquals(Integer.valueOf(400), controller.file(null, null).getCode()); assertEquals(Integer.valueOf(400), controller.file(" ", " ").getCode()); assertEquals(Integer.valueOf(400), controller.file("item-1", "CODE-1").getCode()); } @Test public void returnsFileAndTrimsTestWorkItem() { AtomicReference item = new AtomicReference<>(); ElnDocumentFileVo file = new ElnDocumentFileVo(); file.setFileId("file-1.docx"); ElnTemplateFileController controller = new ElnTemplateFileController((value, code) -> { item.set(value); return file; }); ActionResult result = controller.file(" item-1 ", null); assertEquals(Integer.valueOf(200), result.getCode()); assertEquals("item-1", item.get()); assertEquals("file-1.docx", result.getData().getFileId()); } @Test public void returnsFileAndTrimsTestDefinitionCode() { AtomicReference code = new AtomicReference<>(); ElnDocumentFileVo file = new ElnDocumentFileVo(); file.setFileId("file-1.docx"); ElnTemplateFileController controller = new ElnTemplateFileController((id, value) -> { assertNull(id); code.set(value); return file; }); ActionResult result = controller.file(null, " HD_jyxm_0008 "); assertEquals(Integer.valueOf(200), result.getCode()); assertEquals("HD_jyxm_0008", code.get()); } @Test public void returnsSuccessWithNullDataWhenTemplateMissing() { ElnTemplateFileController controller = new ElnTemplateFileController((item, code) -> null); ActionResult result = controller.file("item-1", null); assertEquals(Integer.valueOf(200), result.getCode()); assertNull(result.getData()); } }