celq 0.4.0

A CEL command-line query tool for JSON data
Documentation
use super::*;
use clap::Parser;

#[test]
fn test_argument_parse_success() {
    let arg: Argument = "name:string=value".parse().unwrap();

    assert_eq!(arg.name, "name");
    assert_eq!(arg.type_name, "string");
    assert_eq!(arg.value, "value");
}

#[test]
fn test_argument_parse_missing_type_separator() {
    let err = "name=value".parse::<Argument>().unwrap_err();

    assert!(err.contains("Invalid argument format"));
}

#[test]
fn test_argument_parse_missing_value_separator() {
    let err = "name:string".parse::<Argument>().unwrap_err();

    assert!(err.contains("Missing value for argument 'name'"));
}

#[test]
fn test_argument_parse_empty_value() {
    let arg: Argument = "name:string=".parse().unwrap();

    assert_eq!(arg.value, "");
}

#[test]
fn test_input_format_defaults_to_json() {
    let cli = Cli::parse_from(["celq", "this"]);

    assert_eq!(cli.input_format(), InputFormat::Json);
}

#[test]
fn test_input_format_xml() {
    let cli = Cli::parse_from(["celq", "--from-xml", "this"]);

    assert_eq!(cli.input_format(), InputFormat::Xml);
}

#[test]
fn test_parse_parallelism_positive() {
    assert_eq!(parse_parallelism("3").unwrap(), 3);
}

#[test]
fn test_parse_parallelism_zero_rejected() {
    let err = parse_parallelism("0").unwrap_err();

    assert_eq!(err, "parallelism level cannot be 0");
}

#[test]
fn test_parse_parallelism_negative_uses_auto() {
    assert_eq!(parse_parallelism("-4").unwrap(), -1);
}

#[test]
fn test_parse_parallelism_invalid() {
    let err = parse_parallelism("abc").unwrap_err();

    assert_eq!(err, "'abc' is not a valid integer");
}