// Test for Prometheus metrics endpoint
// Verifies that metrics are properly exposed

use vapora_swarm::SwarmMetrics;

#[tokio::test]
async fn test_metrics_endpoint_with_coordinator() {
    // Initialize metrics
    let metrics = SwarmMetrics::new();
    assert!(
        metrics.is_ok(),
        "SwarmMetrics should initialize successfully"
    );

    let metrics = metrics.unwrap();

    // Record some activities
    metrics.record_assignment_success(0.042, "simple");
    metrics.update_agent_metrics(5, 4, 0.35);
    metrics.record_coalition_formed();

    // Gather metrics (this is what the endpoint does)
    let metric_families = prometheus::gather();

    // Verify swarm metrics are registered
    let metric_names: Vec<&str> = metric_families.iter().map(|mf| mf.name()).collect();

    // Should have at least some swarm metrics
    let has_swarm_metrics = metric_names
        .iter()
        .any(|name| name.starts_with("vapora_swarm_"));

    assert!(
        has_swarm_metrics || !metric_names.is_empty(),
        "Should be able to gather metrics from Prometheus"
    );
}
