use assert_cmd::Command;
use predicates::prelude::*;
use tempfile::TempDir;
#[test]
fn test_telemetry_command_requires_telemetry_file() {
let mut cmd = Command::cargo_bin("context-creator").unwrap();
let assert = cmd.arg("telemetry").assert();
assert
.failure()
.stderr(predicate::str::contains(
"required arguments were not provided",
))
.stderr(predicate::str::contains("--telemetry-file"));
}
#[test]
fn test_telemetry_command_with_valid_file() {
let temp_dir = TempDir::new().unwrap();
let telemetry_file = temp_dir.path().join("traces.json");
std::fs::write(&telemetry_file, r#"{"traces": []}"#).unwrap();
let mut cmd = Command::cargo_bin("context-creator").unwrap();
let assert = cmd
.arg("telemetry")
.arg("--telemetry-file")
.arg(&telemetry_file)
.assert();
assert
.success()
.stdout(predicate::str::contains("Total spans: 0"));
}
#[test]
fn test_telemetry_command_with_time_range() {
let temp_dir = TempDir::new().unwrap();
let telemetry_file = temp_dir.path().join("traces.json");
std::fs::write(&telemetry_file, r#"{"traces": []}"#).unwrap();
let mut cmd = Command::cargo_bin("context-creator").unwrap();
let assert = cmd
.arg("telemetry")
.arg("--telemetry-file")
.arg(&telemetry_file)
.arg("--time-range")
.arg("2024-01-01T00:00:00Z/2024-01-02T00:00:00Z")
.assert();
assert
.success()
.stdout(predicate::str::contains("Total spans: 0"));
}
#[test]
fn test_telemetry_command_with_service_filter() {
let temp_dir = TempDir::new().unwrap();
let telemetry_file = temp_dir.path().join("traces.json");
std::fs::write(&telemetry_file, r#"{"traces": []}"#).unwrap();
let mut cmd = Command::cargo_bin("context-creator").unwrap();
let assert = cmd
.arg("telemetry")
.arg("--telemetry-file")
.arg(&telemetry_file)
.arg("--service")
.arg("payment-api")
.assert();
assert
.success()
.stdout(predicate::str::contains("Total spans: 0"));
}
#[test]
fn test_telemetry_command_with_custom_paths() {
let temp_dir = TempDir::new().unwrap();
let telemetry_file = temp_dir.path().join("traces.json");
std::fs::write(&telemetry_file, r#"{"traces": []}"#).unwrap();
let source_dir = temp_dir.path().join("src");
std::fs::create_dir(&source_dir).unwrap();
let mut cmd = Command::cargo_bin("context-creator").unwrap();
let assert = cmd
.arg("telemetry")
.arg("--telemetry-file")
.arg(&telemetry_file)
.arg(&source_dir)
.assert();
assert
.success()
.stdout(predicate::str::contains("Total spans: 0"));
}
#[test]
fn test_telemetry_command_validates_file_exists() {
let mut cmd = Command::cargo_bin("context-creator").unwrap();
let assert = cmd
.arg("telemetry")
.arg("--telemetry-file")
.arg("/non/existent/file.json")
.assert();
assert
.failure()
.stderr(predicate::str::contains("Telemetry file does not exist"));
}
#[test]
fn test_telemetry_command_short_flag() {
let temp_dir = TempDir::new().unwrap();
let telemetry_file = temp_dir.path().join("traces.json");
std::fs::write(&telemetry_file, r#"{"traces": []}"#).unwrap();
let mut cmd = Command::cargo_bin("context-creator").unwrap();
let assert = cmd.arg("telemetry").arg("-t").arg(&telemetry_file).assert();
assert
.success()
.stdout(predicate::str::contains("Total spans: 0"));
}