use parent_ai_json_engine::{create_collector_from_config, Config, SchemaValidator};
use std::fs;
use std::path::Path;
use std::sync::Arc;
#[test]
fn collect_training_sample_writes_file() {
let mut config = Config::default();
config
.json_engine
.output
.channels
.training_samples
.buffer_size = 1;
config
.json_engine
.output
.channels
.training_samples
.auto_flush_seconds = 1;
let tmp = std::env::temp_dir().join(format!(
"json_engine_test_training_{}",
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_nanos()
));
fs::create_dir_all(&tmp).expect("create_dir_all tmp training");
let schemas_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("schemas");
let validator = SchemaValidator::new(&schemas_dir).expect("validator init");
let collector = create_collector_from_config(Arc::new(validator), tmp.clone(), &config)
.expect("create collector");
let sample = r#"{"sample":"x"}"#.to_string();
collector
.collect_training_sample(sample)
.expect("collect training");
collector.flush_all().expect("flush_all");
let training_file = tmp.join(&config.json_engine.output.channels.training_samples.filename);
assert!(training_file.exists());
let content = fs::read_to_string(&training_file).expect("read training file");
assert!(content.contains("sample"));
if let Err(e) = fs::remove_dir_all(&tmp) {
eprintln!("cleanup failed: {}", e);
}
}