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