use ralph_core::diagnostics::DiagnosticTraceLayer;
use std::fs;
use tempfile::TempDir;
use tracing_subscriber::prelude::*;
#[test]
fn test_trace_layer_can_be_added_to_subscriber() {
let temp_dir = TempDir::new().unwrap();
let session_dir = temp_dir.path().join("test-session");
fs::create_dir_all(&session_dir).unwrap();
let layer = DiagnosticTraceLayer::new(&session_dir).expect("Should create trace layer");
let _subscriber = tracing_subscriber::registry().with(layer);
let trace_file = session_dir.join("trace.jsonl");
assert!(
trace_file.exists(),
"trace.jsonl should be created when layer is initialized"
);
}
#[test]
fn test_trace_layer_captures_log_events() {
let temp_dir = TempDir::new().unwrap();
let session_dir = temp_dir.path().join("test-session");
fs::create_dir_all(&session_dir).unwrap();
let layer = DiagnosticTraceLayer::new(&session_dir).expect("Should create trace layer");
let subscriber = tracing_subscriber::registry().with(layer);
tracing::subscriber::set_global_default(subscriber).expect("Should set subscriber");
tracing::info!("test message from integration");
let trace_file = session_dir.join("trace.jsonl");
let content = fs::read_to_string(&trace_file).expect("Should read trace.jsonl");
assert!(
content.contains("test message from integration"),
"Trace layer should capture log messages"
);
}