use clap::Parser;
use cqlite_cli::test_infrastructure::*;
use cqlite_cli::{test_container, assert_cli_success, assert_cli_error};
#[tokio::test]
async fn test_cli_help_command() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.test_help()?;
runner.run(&["--help"])?
.assert_success()?
.stdout_contains("CQLite - High-performance embedded database")?;
Ok(())
}
#[tokio::test]
async fn test_cli_version_command() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.test_version()?;
runner.run(&["--version"])?
.assert_success()?
.stdout_contains(env!("CARGO_PKG_VERSION"))?;
Ok(())
}
#[tokio::test]
async fn test_invalid_command() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.run(&["invalid_command"])?
.assert_failure()?
.stderr_contains("error")?;
Ok(())
}
#[tokio::test]
async fn test_verbose_flag() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.run(&["-v", "--help"])?
.assert_success()?;
runner.run(&["-vv", "--help"])?
.assert_success()?;
Ok(())
}
#[tokio::test]
async fn test_quiet_flag() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.run(&["-q", "--help"])?
.assert_success()?;
Ok(())
}
#[tokio::test]
async fn test_config_file_option() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
let env = container.environment();
let config = cqlite_cli::Config::default();
config.save_to_file(&env.config_path)?;
runner.run(&[
"--config",
env.config_path.to_str().unwrap(),
"--help"
])?.assert_success()?;
Ok(())
}
#[tokio::test]
async fn test_database_path_option() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
let env = container.environment();
runner.run(&[
"--database",
env.db_path.to_str().unwrap(),
"--help"
])?.assert_success()?;
Ok(())
}
#[test]
fn test_cli_argument_parsing() {
use clap::Parser;
use cqlite_cli::Commands;
let args = vec!["cqlite", "--help"];
let args = vec!["cqlite", "--version"];
assert!(true);
}
#[tokio::test]
async fn test_output_format_options() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.run(&["--format", "table", "--help"])?
.assert_success()?;
runner.run(&["--format", "json", "--help"])?
.assert_success()?;
runner.run(&["--format", "csv", "--help"])?
.assert_success()?;
Ok(())
}
#[tokio::test]
async fn test_cassandra_version_override() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.run(&["--cassandra-version", "5.0", "--help"])?
.assert_success()?;
runner.run(&["--cassandra-version", "4.0", "--help"])?
.assert_success()?;
Ok(())
}
#[tokio::test]
async fn test_auto_detect_flag() -> TestResult<()> {
test_container!(container);
let runner = CliTestRunner::new(container);
runner.run(&["--auto-detect", "--help"])?
.assert_success()?;
Ok(())
}