Files
crank/crates/crank-core/tests/unit/tool_quality.rs
T
github-ops 3b61d7a25d
Deploy / deploy (push) Successful in 1m40s
CI / Rust Checks (push) Failing after 4m48s
CI / Frontend E2E (push) Has been skipped
CI / Deployment Manifests (push) Has been skipped
CI / UI Checks (push) Has been skipped
Add tool quality report contract
2026-06-20 19:50:46 +00:00

33 lines
1.3 KiB
Rust

use crank_core::{ToolQualityFinding, ToolQualityReport, ToolQualitySeverity};
#[test]
fn serializes_tool_quality_finding_contract() {
let finding = ToolQualityFinding {
severity: ToolQualitySeverity::Warning,
code: "tool_description_too_short".to_owned(),
message: "Описание инструмента слишком короткое.".to_owned(),
suggested_action: Some("Добавьте назначение и условия применения инструмента.".to_owned()),
field_path: Some("tool_description.description".to_owned()),
};
let value = serde_json::to_value(finding).unwrap();
assert_eq!(value["severity"], "warning");
assert_eq!(value["code"], "tool_description_too_short");
assert_eq!(value["field_path"], "tool_description.description");
}
#[test]
fn report_is_blocking_when_error_finding_exists() {
let report = ToolQualityReport::new(vec![ToolQualityFinding {
severity: ToolQualitySeverity::Error,
code: "tool_name_missing".to_owned(),
message: "Имя инструмента обязательно.".to_owned(),
suggested_action: None,
field_path: Some("name".to_owned()),
}]);
assert!(report.blocking);
assert_eq!(report.findings.len(), 1);
}