use std::process::Command; use assert_cmd::prelude::*; use predicates::prelude::*; #[test] fn test_convert_json_to_yaml() { let mut cmd = Command::cargo_bin("config-forge").unwrap(); cmd.arg("convert") .arg("-i") .arg("test_data/sample.json") .arg("-t") .arg("yaml") .arg("--no-color"); cmd.assert() .success() .stdout(predicate::str::contains("name:")); } #[test] fn test_convert_yaml_to_json() { let mut cmd = Command::cargo_bin("config-forge").unwrap(); cmd.arg("convert") .arg("-i") .arg("test_data/sample.yaml") .arg("-t") .arg("json") .arg("--no-color"); cmd.assert() .success() .stdout(predicate::str::contains("\"name\"")); } #[test] fn test_validate_valid_config() { let mut cmd = Command::cargo_bin("config-forge").unwrap(); cmd.arg("validate") .arg("-c") .arg("test_data/sample.json") .arg("-S") .arg("test_data/schema.json") .arg("--no-color"); cmd.assert() .success() .stdout(predicate::str::contains("passed")); } #[test] fn test_infer_schema() { let mut cmd = Command::cargo_bin("config-forge").unwrap(); cmd.arg("infer") .arg("-i") .arg("test_data/sample.json") .arg("--no-color"); cmd.assert() .success() .stdout(predicate::str::contains("type")) .stdout(predicate::str::contains("object")); } #[test] fn test_help() { let mut cmd = Command::cargo_bin("config-forge").unwrap(); cmd.arg("--help"); cmd.assert() .success() .stdout(predicate::str::contains("config-forge")) .stdout(predicate::str::contains("convert")) .stdout(predicate::str::contains("validate")) .stdout(predicate::str::contains("generate-ts")) .stdout(predicate::str::contains("batch")); } #[test] fn test_version() { let mut cmd = Command::cargo_bin("config-forge").unwrap(); cmd.arg("--version"); cmd.assert() .success() .stdout(predicate::str::contains("config-forge")); }