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); }