import { assertEquals } from "https://deno.land/std/testing/asserts.ts"; import { createMockContext } from "../../test/mock_context.ts"; import * as workOrders from "../../server/controllers/workOrders.ts"; import { WorkflowEngine } from "../../server/utils/workflow_engine.ts"; // Mock WorkflowEngine class MockWorkflowEngine extends WorkflowEngine { async canTransition(from: string, to: string, roles: string[]) { return true; } async logStatusChange( workOrderId: number, fromStatus: string, toStatus: string, userId: number, comment?: string ) {} async checkTimeout(workOrderId: number) {} } Deno.test("changeWorkOrderStatus - 成功变更状态", async () => { const mockContext = createMockContext({ params: { id: "1" }, json: { status: "in_progress", comment: "测试" }, user: { id: 1, roles: "admin" } }); // 替换为mock工作流引擎 const originalEngine = workOrders.WorkflowEngine; workOrders.WorkflowEngine = MockWorkflowEngine; try { await workOrders.changeWorkOrderStatus(mockContext); assertEquals(mockContext.response.status, 200); } finally { workOrders.WorkflowEngine = originalEngine; } }); Deno.test("changeWorkOrderStatus - 无效状态流转", async () => { const mockContext = createMockContext({ params: { id: "1" }, json: { status: "invalid_status" }, user: { id: 1, roles: "admin" } }); // 自定义mock返回false const originalEngine = workOrders.WorkflowEngine; workOrders.WorkflowEngine = class extends MockWorkflowEngine { async canTransition() { return false; } }; try { await workOrders.changeWorkOrderStatus(mockContext); assertEquals(mockContext.response.status, 403); } finally { workOrders.WorkflowEngine = originalEngine; } }); Deno.test("getWorkOrderStatusHistory - 成功获取历史", async () => { const mockContext = createMockContext({ params: { id: "1" } }); await workOrders.getWorkOrderStatusHistory(mockContext); assertEquals(mockContext.response.status, 200); });