quartz-cli 1.3.1

The command-line tool to build and test HTTP requests.
Documentation
use crate::utils::*;

#[test]
fn it_can_create_variables() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    let output = quartz.cmd(&["var", "set", "baseUrl=localhost"])?;
    assert!(output.status.success(), "{}", output.stderr);

    let output = quartz.cmd(&["var", "get", "baseUrl"])?;
    assert_eq!(
        output.stdout.trim(),
        "localhost",
        "did not save variable correctly"
    );

    Ok(())
}

#[test]
fn it_can_set_multiple_variables() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    let output = quartz.cmd(&["var", "set", "baseUrl=localhost", "scheme=https"])?;
    assert!(output.status.success(), "{}", output.stderr);

    let output = quartz.cmd(&["variable", "get", "baseUrl"])?;
    assert_eq!(
        output.stdout.trim(),
        "localhost",
        "did not save first variable correctly"
    );

    let output = quartz.cmd(&["variable", "get", "scheme"])?;
    assert_eq!(
        output.stdout.trim(),
        "https",
        "did not save second variable correctly"
    );

    Ok(())
}
#[test]
fn it_ignores_outer_single_quotes() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    let set_output = quartz.cmd(&["variable", "set", "baseUrl='localhost'"])?;
    let get_output = quartz.cmd(&["variable", "get", "baseUrl"])?;

    assert!(set_output.status.success(), "{}", set_output.stderr);
    assert_eq!(
        get_output.stdout.trim(),
        "localhost",
        "did not save variable correctly"
    );

    Ok(())
}

#[test]
fn it_ignores_outer_double_quotes() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    let set_output = quartz.cmd(&["variable", "set", "baseUrl=\"localhost\""])?;
    let get_output = quartz.cmd(&["variable", "get", "baseUrl"])?;

    assert!(set_output.status.success(), "{}", set_output.stderr);
    assert_eq!(
        get_output.stdout.trim(),
        "localhost",
        "did not save variable correctly"
    );

    Ok(())
}

#[test]
fn it_can_overwrite_existing_variables() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    quartz.cmd(&["variable", "set", "baseUrl=localhost"])?;

    let set_output = quartz.cmd(&["variable", "set", "baseUrl=128.0.0.1"])?;
    let get_output = quartz.cmd(&["variable", "get", "baseUrl"])?;

    assert!(set_output.status.success(), "{}", set_output.stderr);
    assert_eq!(
        get_output.stdout.trim(),
        "128.0.0.1",
        "did not overwrote variable value"
    );

    Ok(())
}

#[test]
fn each_env_has_its_own_variables() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    quartz.cmd(&["variable", "set", "baseUrl=localhost"])?;
    quartz.cmd(&["env", "create", "example"])?;
    quartz.cmd(&["env", "use", "example"])?;

    let output = quartz.cmd(&["variable", "get", "baseUrl"])?;
    assert_ne!(output.stdout.trim(), "localhost", "");

    quartz.cmd(&["env", "use", "default"])?;

    let output = quartz.cmd(&["variable", "get", "baseUrl"])?;
    assert_eq!(output.stdout.trim(), "localhost");

    Ok(())
}

#[test]
fn it_can_remove_variable() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    quartz.cmd(&["var", "set", "baseUrl=localhost"])?;
    let output = quartz.cmd(&["var", "rm", "baseUrl"])?;
    let get_output = quartz.cmd(&["var", "get", "baseUrl"])?;

    assert!(output.status.success(), "{}", output.stderr);
    assert!(get_output.stdout.is_empty(), "{:?}", output.stdout);

    Ok(())
}

#[test]
fn it_can_remove_multiple_variable() -> TestResult {
    let quartz = Quartz::preset_using_default_env()?;

    quartz.cmd(&["var", "set", "baseUrl=localhost", "other=true", "flag=on"])?;
    let output = quartz.cmd(&["var", "rm", "baseUrl", "flag"])?;
    assert!(output.status.success(), "{}", output.stderr);

    let output = quartz.cmd(&["var", "ls"])?;
    assert!(output.stdout.contains("other=true"), "{}", output.stdout);
    assert!(!output.stdout.contains("baseUrl"), "{}", output.stdout);
    assert!(!output.stdout.contains("flag"), "{}", output.stdout);

    Ok(())
}