From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-dms/jnpf-dms-controller/src/test/java/jnpf/dmsController/DmsWenjianBianhaoControllerTest.java |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-controller/src/test/java/jnpf/dmsController/DmsWenjianBianhaoControllerTest.java b/jnpf-dms/jnpf-dms-controller/src/test/java/jnpf/dmsController/DmsWenjianBianhaoControllerTest.java
new file mode 100644
index 0000000..402ff0f
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-controller/src/test/java/jnpf/dmsController/DmsWenjianBianhaoControllerTest.java
@@ -0,0 +1,98 @@
+package jnpf.dmsController;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import jnpf.dmsEntity.wenjianbianhao.DmsFlowEventType;
+import jnpf.dmsEntity.wenjianbianhao.form.DmsFlowEventForm;
+import jnpf.dmsEntity.wenjianbianhao.vo.DmsWenjianBianhaoRuleVO;
+import jnpf.dmsService.DmsWenjianBianhaoApplicationService;
+import jnpf.exception.DataException;
+import jnpf.flowable.WorkFlowApi;
+import jnpf.flowable.entity.TaskEntity;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class DmsWenjianBianhaoControllerTest {
+
+    private final DmsWenjianBianhaoApplicationService service =
+            mock(DmsWenjianBianhaoApplicationService.class);
+    private final WorkFlowApi workFlowApi = mock(WorkFlowApi.class);
+    private final DmsWenjianBianhaoController controller =
+            new DmsWenjianBianhaoController(service, workFlowApi);
+
+    @Test
+    void startEventReadsWorkflowStateBeforeCallingBusinessService() throws DataException {
+        DmsFlowEventForm form = form("flow-1", "task-1", DmsFlowEventType.START);
+        TaskEntity task = new TaskEntity();
+        task.setId("task-1");
+        task.setStatus(1);
+        when(workFlowApi.getInfoSubmit("task-1")).thenReturn(task);
+
+        controller.syncApplicationFlowEvent(form);
+
+        verify(service).syncApplicationFlow(
+                "flow-1", "task-1", 1, DmsFlowEventType.START);
+    }
+
+    @Test
+    void rejectsMissingWorkflowTask() {
+        DmsFlowEventForm form = form("flow-1", "task-1", DmsFlowEventType.END);
+        when(workFlowApi.getInfoSubmit("task-1")).thenReturn(null);
+
+        assertThrows(DataException.class, () -> controller.syncApplicationFlowEvent(form));
+    }
+
+    @Test
+    void acceptsJnpfSnakeCaseEventParameters() throws Exception {
+        DmsFlowEventForm form = new ObjectMapper().readValue(
+                "{\"flow_id\":\"flow-1\",\"task_id\":\"task-1\",\"event_type\":\"recall\"}",
+                DmsFlowEventForm.class);
+
+        assertEquals("flow-1", form.getFlowId());
+        assertEquals("task-1", form.getTaskId());
+        assertEquals(DmsFlowEventType.RECALL, form.getEventType());
+    }
+
+    @Test
+    void ruleOptionUsesJnpfInterfaceFieldNames() throws Exception {
+        DmsWenjianBianhaoRuleVO rule = new DmsWenjianBianhaoRuleVO();
+        rule.setId("rule-1");
+        rule.setGuizeMingcheng("QC-SOP瑙勫垯");
+        rule.setYulanBianhao("QC-SOP-寰呭");
+        rule.setGuizeXianshi("QC-SOP瑙勫垯 / QC-SOP-寰呭");
+
+        String json = new ObjectMapper().writeValueAsString(rule);
+
+        org.junit.jupiter.api.Assertions.assertTrue(json.contains("\"f_id\":\"rule-1\""));
+        org.junit.jupiter.api.Assertions.assertTrue(
+                json.contains("\"yulan_bianhao\":\"QC-SOP-寰呭\""));
+        org.junit.jupiter.api.Assertions.assertTrue(json.contains("\"guize_xianshi\""));
+    }
+
+    @Test
+    void nameChangeUsesItsIndependentBusinessService() throws DataException {
+        DmsFlowEventForm form = form("flow-2", "task-2", DmsFlowEventType.END);
+        TaskEntity task = new TaskEntity();
+        task.setId("task-2");
+        task.setStatus(2);
+        when(workFlowApi.getInfoSubmit("task-2")).thenReturn(task);
+
+        controller.syncNameChangeFlowEvent(form);
+
+        verify(service).syncNameChangeFlow(
+                "flow-2", "task-2", 2, DmsFlowEventType.END);
+    }
+
+    private DmsFlowEventForm form(String flowId, String taskId,
+                                  DmsFlowEventType eventType) {
+        DmsFlowEventForm form = new DmsFlowEventForm();
+        form.setFlowId(flowId);
+        form.setTaskId(taskId);
+        form.setEventType(eventType);
+        return form;
+    }
+}

--
Gitblit v1.8.0