Skip to main content

apif_execution/
validator.rs

1#[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}