33 lines
1.3 KiB
Rust
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);
|
|
}
|