athena_rs 3.26.4

Hyper performant polyglot Database driver
Documentation
//! Success-response payload assembly for `/debug/schema`.
//!
//! This module owns constructing the successful HTTP response from a fully
//! built diagnostics report payload.

use actix_web::HttpResponse;

use super::debug_contracts::LoggingSchemaDebugReport;

/// Builds the successful route response from one diagnostics report payload.
pub(super) fn debug_schema_success_response(report: LoggingSchemaDebugReport) -> HttpResponse {
    HttpResponse::Ok().json(report)
}

#[cfg(test)]
mod tests {
    use actix_web::http::StatusCode;

    use super::*;
    use crate::api::schema::debug_report_test_fixtures::build_empty_logging_schema_debug_report_for_tests;
    use crate::api::schema::debug_response_test_helpers::{
        assert_success_payload_field_for_tests, response_json_for_tests,
    };

    #[actix_web::test]
    /// Ensures success responses return HTTP 200 with the expected debug-report payload fields.
    async fn success_response_uses_ok_status() {
        let report = build_empty_logging_schema_debug_report_for_tests();
        let response = debug_schema_success_response(report);
        assert_eq!(response.status(), StatusCode::OK);
        let body = response_json_for_tests(response, "success response").await;

        for field in [
            "summary",
            "expected_tables",
            "observed_tables",
            "still_needed",
        ] {
            assert_success_payload_field_for_tests(&body, field, "success response");
        }
    }
}