test(workflow): erp-workflow 单元测试从 16 增至 63 — 覆盖 model/error/parser/expression/executor
- model.rs: 13 个 FlowGraph 测试(build/outgoing/incoming/start-end 边界) - error.rs: 7 个 WorkflowError → AppError 转换测试 - parser.rs: 11 个新增验证边界测试(空图/多起点/幽灵边/网关约束) - expression.rs: 13 个新增求值测试(float/bool/string/复合表达式/空白容错) - executor.rs: 3 个 is_join_gateway 纯函数测试
This commit is contained in:
@@ -51,3 +51,78 @@ impl From<WorkflowError> for AppError {
|
||||
}
|
||||
|
||||
pub type WorkflowResult<T> = Result<T, WorkflowError>;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn validation_maps_to_app_error_validation() {
|
||||
let err = WorkflowError::Validation("字段缺失".to_string());
|
||||
let app: AppError = err.into();
|
||||
match app {
|
||||
AppError::Validation(msg) => assert!(msg.contains("字段缺失")),
|
||||
other => panic!("期望 AppError::Validation,得到 {:?}", other),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn not_found_maps_to_app_error_not_found() {
|
||||
let err = WorkflowError::NotFound("流程不存在".to_string());
|
||||
let app: AppError = err.into();
|
||||
match app {
|
||||
AppError::NotFound(msg) => assert!(msg.contains("流程不存在")),
|
||||
other => panic!("期望 AppError::NotFound,得到 {:?}", other),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn duplicate_definition_maps_to_app_error_conflict() {
|
||||
let err = WorkflowError::DuplicateDefinition("key 已存在".to_string());
|
||||
let app: AppError = err.into();
|
||||
match app {
|
||||
AppError::Conflict(msg) => assert!(msg.contains("key 已存在")),
|
||||
other => panic!("期望 AppError::Conflict,得到 {:?}", other),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn invalid_diagram_maps_to_validation() {
|
||||
let err = WorkflowError::InvalidDiagram("缺少 StartEvent".to_string());
|
||||
let app: AppError = err.into();
|
||||
match app {
|
||||
AppError::Validation(msg) => assert!(msg.contains("缺少 StartEvent")),
|
||||
other => panic!("期望 AppError::Validation,得到 {:?}", other),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn invalid_state_maps_to_validation() {
|
||||
let err = WorkflowError::InvalidState("流程已结束".to_string());
|
||||
let app: AppError = err.into();
|
||||
match app {
|
||||
AppError::Validation(msg) => assert!(msg.contains("流程已结束")),
|
||||
other => panic!("期望 AppError::Validation,得到 {:?}", other),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn expression_error_maps_to_validation() {
|
||||
let err = WorkflowError::ExpressionError("语法错误".to_string());
|
||||
let app: AppError = err.into();
|
||||
match app {
|
||||
AppError::Validation(msg) => assert!(msg.contains("语法错误")),
|
||||
other => panic!("期望 AppError::Validation,得到 {:?}", other),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn version_mismatch_maps_directly() {
|
||||
let err = WorkflowError::VersionMismatch;
|
||||
let app: AppError = err.into();
|
||||
match app {
|
||||
AppError::VersionMismatch => {},
|
||||
other => panic!("期望 AppError::VersionMismatch,得到 {:?}", other),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user