diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs new file mode 100644 index 0000000..1cfdae3 --- /dev/null +++ b/tests/integration_tests.rs @@ -0,0 +1,86 @@ +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")); +}