test: add 149 unit tests across core, auth, config, message crates

Test coverage increased from ~34 to 183 tests (zero failures):

- erp-core (21): version check, pagination, API response, error mapping
- erp-auth (39): org tree building, DTO validation, error conversion,
  password hashing, user model mapping
- erp-config (57): DTO validation, numbering reset logic, menu tree
  building, error conversion. Fixed BatchSaveMenusReq nested validation
- erp-message (50): DTO validation, template rendering, query defaults,
  error conversion
- erp-workflow (16): unchanged (parser + expression tests)

All tests are pure unit tests requiring no database.
This commit is contained in:
iven
2026-04-15 01:06:34 +08:00
parent 9568dd7875
commit ee65b6e3c9
13 changed files with 1995 additions and 4 deletions

View File

@@ -113,3 +113,81 @@ impl TemplateService {
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn render_replaces_single_variable() {
let mut vars = std::collections::HashMap::new();
vars.insert("name".to_string(), "张三".to_string());
let result = TemplateService::render("您好,{{name}}", &vars);
assert_eq!(result, "您好,张三");
}
#[test]
fn render_replaces_multiple_variables() {
let mut vars = std::collections::HashMap::new();
vars.insert("name".to_string(), "李四".to_string());
vars.insert("code".to_string(), "ORD-001".to_string());
let result = TemplateService::render("{{name}},您的订单 {{code}} 已发货", &vars);
assert_eq!(result, "李四,您的订单 ORD-001 已发货");
}
#[test]
fn render_no_variables_returns_original() {
let vars = std::collections::HashMap::new();
let result = TemplateService::render("没有变量的模板", &vars);
assert_eq!(result, "没有变量的模板");
}
#[test]
fn render_missing_variable_leaves_placeholder() {
let vars = std::collections::HashMap::new();
let result = TemplateService::render("您好,{{name}}", &vars);
assert_eq!(result, "您好,{{name}}");
}
#[test]
fn render_same_variable_multiple_times() {
let mut vars = std::collections::HashMap::new();
vars.insert("user".to_string(), "王五".to_string());
let result = TemplateService::render("{{user}} 你好,{{user}} 的订单已确认", &vars);
assert_eq!(result, "王五 你好,王五 的订单已确认");
}
#[test]
fn render_empty_template() {
let mut vars = std::collections::HashMap::new();
vars.insert("name".to_string(), "test".to_string());
let result = TemplateService::render("", &vars);
assert_eq!(result, "");
}
#[test]
fn render_empty_variable_value() {
let mut vars = std::collections::HashMap::new();
vars.insert("name".to_string(), "".to_string());
let result = TemplateService::render("您好,{{name}}", &vars);
assert_eq!(result, "您好,!");
}
#[test]
fn render_adjacent_variables() {
let mut vars = std::collections::HashMap::new();
vars.insert("a".to_string(), "1".to_string());
vars.insert("b".to_string(), "2".to_string());
let result = TemplateService::render("{{a}}{{b}}", &vars);
assert_eq!(result, "12");
}
#[test]
fn render_extra_variables_not_in_template_are_ignored() {
let mut vars = std::collections::HashMap::new();
vars.insert("name".to_string(), "赵六".to_string());
vars.insert("unused".to_string(), "ignore".to_string());
let result = TemplateService::render("你好 {{name}}", &vars);
assert_eq!(result, "你好 赵六");
}
}