cargo-gears 0.0.1

Command-line interface for Gears rust
mod common;

use cargo_gears_core::GearsCommand;
use cargo_gears_core::generate::{GenerateCommand, GenerateParams};
use common::parse_command;
use std::path::PathBuf;

#[test]
fn parses_generate_workspace_into_core_command() {
    let command = parse_command(&[
        "gears",
        "generate",
        "workspace",
        "/tmp/cf-demo",
        "--project",
        "cf-demo",
    ]);

    assert_eq!(
        command,
        GearsCommand::Generate(GenerateParams {
            command: GenerateCommand::Workspace(
                cargo_gears_core::generate::workspace::WorkspaceParams {
                    path: PathBuf::from("/tmp/cf-demo"),
                    template: "default".to_owned(),
                    name: Some("cf-demo".to_owned()),
                    verbose: false,
                    local_path: None,
                    git: None,
                    subfolder: None,
                    branch: None,
                    r#override: false,
                }
            ),
        })
    );
}

#[test]
fn parses_new_alias_into_core_command() {
    let command = parse_command(&["gears", "new", "/tmp/cf-demo"]);

    assert_eq!(
        command,
        GearsCommand::Generate(GenerateParams {
            command: GenerateCommand::Workspace(
                cargo_gears_core::generate::workspace::WorkspaceParams {
                    path: PathBuf::from("/tmp/cf-demo"),
                    template: "default".to_owned(),
                    name: None,
                    verbose: false,
                    local_path: None,
                    git: None,
                    subfolder: None,
                    branch: None,
                    r#override: false,
                }
            ),
        })
    );
}

#[test]
fn parses_generate_workspace_with_custom_template() {
    let command = parse_command(&[
        "gears",
        "generate",
        "workspace",
        "/tmp/cf-demo",
        "--template",
        "custom",
    ]);

    assert_eq!(
        command,
        GearsCommand::Generate(GenerateParams {
            command: GenerateCommand::Workspace(
                cargo_gears_core::generate::workspace::WorkspaceParams {
                    path: PathBuf::from("/tmp/cf-demo"),
                    template: "custom".to_owned(),
                    name: None,
                    verbose: false,
                    local_path: None,
                    git: None,
                    subfolder: None,
                    branch: None,
                    r#override: false,
                }
            ),
        })
    );
}

#[test]
fn parses_generate_module_into_core_command() {
    let command = parse_command(&[
        "gears",
        "generate",
        "module",
        "--template",
        "api-db-handler",
    ]);

    assert_eq!(
        command,
        GearsCommand::Generate(GenerateParams {
            command: GenerateCommand::Module(cargo_gears_core::generate::module::ModuleParams {
                template: "api-db-handler".to_owned(),
                name: None,
                path: PathBuf::from("."),
                verbose: false,
                local_path: None,
                git: None,
                subfolder: None,
                branch: None,
            }),
        })
    );
}

#[test]
fn parses_generate_module_with_name() {
    let command = parse_command(&[
        "gears",
        "generate",
        "module",
        "--template",
        "background-worker",
        "--name",
        "jobs",
    ]);

    assert_eq!(
        command,
        GearsCommand::Generate(GenerateParams {
            command: GenerateCommand::Module(cargo_gears_core::generate::module::ModuleParams {
                template: "background-worker".to_owned(),
                name: Some("jobs".to_owned()),
                path: PathBuf::from("."),
                verbose: false,
                local_path: None,
                git: None,
                subfolder: None,
                branch: None,
            }),
        })
    );
}

#[test]
fn parses_generate_config_into_core_command() {
    let command = parse_command(&[
        "gears",
        "generate",
        "config",
        "--template",
        "dev",
        "--app",
        "myapp",
        "--env",
        "staging",
    ]);

    assert_eq!(
        command,
        GearsCommand::Generate(GenerateParams {
            command: GenerateCommand::Config(
                cargo_gears_core::generate::config::GenerateConfigParams {
                    template: "dev".to_owned(),
                    app: Some("myapp".to_owned()),
                    env: Some("staging".to_owned()),
                    name: None,
                    path: PathBuf::from("."),
                }
            ),
        })
    );
}