# 报销流程配置接口测试说明 ## 测试前准备 1. **启动后端服务** ```bash # 确保后端服务在 localhost:2011 运行 # 如果没有启动,请先启动后端服务 ``` 2. **确保数据库表已创建** ```sql -- 执行 sql/创建报销流程配置表.sql 中的SQL语句 -- 确保以下表已创建: -- - lq_reimbursement_workflow_config -- - lq_reimbursement_workflow_node -- - lq_reimbursement_workflow_node_user ``` ## 运行测试脚本 ```bash # 在项目根目录执行 python3 test_reimbursement_workflow_config_api.py ``` ## 测试接口列表 ### 1. 获取启用的流程列表 - **接口**: `GET /api/Extend/LqReimbursementWorkflowConfig/Actions/GetEnabledList` - **用途**: 获取所有启用的流程配置,用于前端下拉选择 - **返回**: 基础信息列表(不含节点详情) ### 2. 获取流程列表(分页) - **接口**: `GET /api/Extend/LqReimbursementWorkflowConfig` - **参数**: - `currentPage`: 当前页码(默认1) - `pageSize`: 每页数量(默认20) - `keyword`: 关键字(流程名称模糊查询,可选) - `queryJson`: JSON字符串,可包含 `{"isEnabled": 1}` 来筛选启用状态 - **返回**: 分页列表,包含流程基础信息 ### 3. 创建流程配置 - **接口**: `POST /api/Extend/LqReimbursementWorkflowConfig` - **请求体示例**: ```json { "workflowName": "标准报销流程", "isEnabled": 1, "description": "适用于一般报销申请的审批流程", "nodes": [ { "nodeOrder": 1, "nodeName": "部门经理审批", "approvalType": "会签", "isRequired": 1, "approverIds": [], "approverNames": [] }, { "nodeOrder": 2, "nodeName": "财务审批", "approvalType": "会签", "isRequired": 1, "approverIds": [], "approverNames": [] } ] } ``` - **验证规则**: - 流程名称不能为空 - 至少需要1个节点 - 节点数量不能超过20个 - 节点顺序必须连续(1, 2, 3, ...) - 节点名称不能为空 - **返回**: `{"code": 200, "data": {"id": "流程配置ID"}}` ### 4. 获取流程详细信息 - **接口**: `GET /api/Extend/LqReimbursementWorkflowConfig/{id}` - **用途**: 获取流程的完整信息,包括所有节点和审批人 - **返回**: 完整的流程配置信息,包含所有节点详情 ### 5. 更新流程配置 - **接口**: `PUT /api/Extend/LqReimbursementWorkflowConfig/{id}` - **请求体**: 与创建接口相同,但必须包含 `id` 字段 - **说明**: 更新时会删除原有节点和审批人配置,重新创建 - **验证规则**: 与创建接口相同 ## 手动测试示例(使用 curl) ### 1. 获取Token ```bash curl -X POST "http://localhost:2011/api/oauth/Login" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e" ``` ### 2. 获取启用的流程列表 ```bash TOKEN="Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." curl -X GET "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig/Actions/GetEnabledList" \ -H "Authorization: $TOKEN" ``` ### 3. 获取流程列表 ```bash curl -X GET "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig?currentPage=1&pageSize=20" \ -H "Authorization: $TOKEN" ``` ### 4. 创建流程配置 ```bash curl -X POST "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "workflowName": "测试流程", "isEnabled": 1, "description": "测试描述", "nodes": [ { "nodeOrder": 1, "nodeName": "节点1", "approvalType": "会签", "isRequired": 1, "approverIds": [], "approverNames": [] } ] }' ``` ### 5. 获取流程详细信息 ```bash WORKFLOW_ID="创建的流程ID" curl -X GET "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig/$WORKFLOW_ID" \ -H "Authorization: $TOKEN" ``` ### 6. 更新流程配置 ```bash WORKFLOW_ID="要更新的流程ID" curl -X PUT "http://localhost:2011/api/Extend/LqReimbursementWorkflowConfig/$WORKFLOW_ID" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "id": "'$WORKFLOW_ID'", "workflowName": "更新后的流程名称", "isEnabled": 1, "description": "更新后的描述", "nodes": [ { "nodeOrder": 1, "nodeName": "更新后的节点1", "approvalType": "会签", "isRequired": 1, "approverIds": [], "approverNames": [] } ] }' ``` ## 测试检查点 ### 创建接口测试 - ✅ 正常创建流程(2个节点) - ✅ 流程名称为空 → 应该返回错误 - ✅ 节点列表为空 → 应该返回错误 - ✅ 节点顺序不连续(1, 3) → 应该返回错误 - ✅ 节点名称为空 → 应该返回错误 - ✅ 节点数量超过20个 → 应该返回错误 ### 更新接口测试 - ✅ 正常更新流程(修改名称、描述、节点) - ✅ 更新时增加节点数量 - ✅ 更新时减少节点数量 - ✅ 更新时修改节点顺序 - ✅ 更新时修改审批类型(会签/或签) ### 查询接口测试 - ✅ 获取列表(分页) - ✅ 获取列表(关键字搜索) - ✅ 获取列表(启用状态筛选) - ✅ 获取详细信息(包含所有节点) - ✅ 获取详细信息(包含审批人信息) ### 数据一致性测试 - ✅ 创建后立即查询,数据应该一致 - ✅ 更新后立即查询,数据应该一致 - ✅ 创建流程后,节点数量应该正确 - ✅ 更新流程后,原有节点应该被删除,新节点应该正确创建 ## 预期结果 所有测试应该通过,接口应该: 1. 正确验证输入参数 2. 正确处理事务(创建/更新失败时回滚) 3. 正确返回数据格式 4. 数据一致性保证 ## 注意事项 1. **审批人ID**: 当前测试脚本中审批人ID为空,实际使用时需要填入真实的用户ID 2. **Token过期**: 如果Token过期,需要重新获取 3. **数据库连接**: 确保数据库连接正常 4. **外键约束**: 确保删除流程配置时,相关的节点和审批人配置也会被正确删除(已在SQL中设置CASCADE)