apif-execution 0.2.0

Test execution engine
Documentation
#[cfg(test)]
use crate::model::{TestExecutionResult, TestExecutionStatus};
#[cfg(test)]
use apif_ast::GctfDocument;

#[cfg(test)]
pub struct TestValidator;
#[cfg(test)]
impl TestValidator {
    pub fn validate(document: &GctfDocument) -> Result<(), String> {
        if document
            .first_section(apif_ast::SectionType::Request)
            .is_none()
        {
            return Err("No REQUEST section".into());
        }
        if document
            .first_section(apif_ast::SectionType::Endpoint)
            .is_none()
        {
            return Err("No ENDPOINT section".into());
        }
        Ok(())
    }
    pub fn validate_result(result: &TestExecutionResult) -> bool {
        matches!(result.status, TestExecutionStatus::Pass)
    }
    pub fn get_result_summary(result: &TestExecutionResult) -> String {
        match &result.status {
            TestExecutionStatus::Pass => format!(
                "{} passed",
                result
                    .call_duration_ms
                    .map(|d| format!("{}ms", d))
                    .unwrap_or_default()
            ),
            TestExecutionStatus::Fail(msg) => format!("✗ FAILED: {}", msg),
        }
    }
}