apif_execution/
validator.rs1#[cfg(test)]
2use crate::model::{TestExecutionResult, TestExecutionStatus};
3#[cfg(test)]
4use apif_ast::GctfDocument;
5
6#[cfg(test)]
7pub struct TestValidator;
8#[cfg(test)]
9impl TestValidator {
10 pub fn validate(document: &GctfDocument) -> Result<(), String> {
11 if document
12 .first_section(apif_ast::SectionType::Request)
13 .is_none()
14 {
15 return Err("No REQUEST section".into());
16 }
17 if document
18 .first_section(apif_ast::SectionType::Endpoint)
19 .is_none()
20 {
21 return Err("No ENDPOINT section".into());
22 }
23 Ok(())
24 }
25 pub fn validate_result(result: &TestExecutionResult) -> bool {
26 matches!(result.status, TestExecutionStatus::Pass)
27 }
28 pub fn get_result_summary(result: &TestExecutionResult) -> String {
29 match &result.status {
30 TestExecutionStatus::Pass => format!(
31 "✓ {} passed",
32 result
33 .call_duration_ms
34 .map(|d| format!("{}ms", d))
35 .unwrap_or_default()
36 ),
37 TestExecutionStatus::Fail(msg) => format!("✗ FAILED: {}", msg),
38 }
39 }
40}