Skip to content

Commit

Permalink
Add tests for the last three commits
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelfranca committed Jan 16, 2025
1 parent 1f07fca commit 262dc86
Show file tree
Hide file tree
Showing 2 changed files with 141 additions and 0 deletions.
93 changes: 93 additions & 0 deletions src/docker_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,72 @@ mod tests {
);
}

#[test]
fn build_image_with_rebuild_flag() {
let command = DockerClient::build_image("3.2.3", Some("7.1.3"), None, None, true);

let args: Vec<&OsStr> = command.get_args().collect();

assert_eq!(
args,
&[
"build",
"--no-cache",
"--build-arg",
"RUBY_VERSION=3.2.3",
"--build-arg",
"RAILS_VERSION=7.1.3",
"-t",
"rails-new-3.2.3-7.1.3",
"-",
]
);
}

#[test]
fn build_image_without_rails_version() {
let command = DockerClient::build_image("3.2.3", None, None, None, false);

let args: Vec<&OsStr> = command.get_args().collect();

assert_eq!(
args,
&[
"build",
"--build-arg",
"RUBY_VERSION=3.2.3",
"-t",
"rails-new-3.2.3",
"-",
]
);
}

#[test]
fn build_image_with_both_ids() {
let command = DockerClient::build_image("3.2.3", Some("7.1.3"), Some(1000), Some(1000), false);

let args: Vec<&OsStr> = command.get_args().collect();

assert_eq!(
args,
&[
"build",
"--build-arg",
"RUBY_VERSION=3.2.3",
"--build-arg",
"RAILS_VERSION=7.1.3",
"--build-arg",
"USER_ID=1000",
"--build-arg",
"GROUP_ID=1000",
"-t",
"rails-new-3.2.3-7.1.3",
"-",
]
);
}

#[test]
fn run_image() {
let command = DockerClient::run_image("3.2.3", Some("7.1.3"), vec!["my_app".to_string()]);
Expand Down Expand Up @@ -235,6 +301,33 @@ mod tests {
);
}

#[test]
fn run_image_without_rails_version() {
let command = DockerClient::run_image("3.2.3", None, vec!["my_app".to_string()]);

let binding = current_dir().unwrap();
let absolute_path = canonicalize_os_path(&binding).unwrap();
let current_dir = absolute_path.to_str().unwrap();

let args: Vec<&OsStr> = command.get_args().collect();

assert_eq!(
args,
&[
"run",
"--rm",
"-v",
&format!("{}:{}", current_dir, current_dir),
"-w",
current_dir,
"rails-new-3.2.3",
"rails",
"new",
"my_app",
]
);
}

#[test]
fn get_help() {
let command = DockerClient::get_help("3.2.3", Some("7.1.3"));
Expand Down
48 changes: 48 additions & 0 deletions src/rails_new.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,52 @@ mod tests {

Ok(())
}

#[test]
fn custom_ruby_version() -> Result<(), Box<dyn std::error::Error>> {
use clap::CommandFactory;

let m = Cli::command().get_matches_from(vec!["rails-new", "--ruby-version", "3.2.0", "my_app"]);
let ruby_version = m.get_one::<String>("ruby_version").unwrap();
assert_eq!(ruby_version, "3.2.0");

// Test short form
let m = Cli::command().get_matches_from(vec!["rails-new", "-u", "3.2.0", "my_app"]);
let ruby_version = m.get_one::<String>("ruby_version").unwrap();
assert_eq!(ruby_version, "3.2.0");

Ok(())
}

#[test]
fn rails_version_flag() -> Result<(), Box<dyn std::error::Error>> {
use clap::CommandFactory;

let m = Cli::command().get_matches_from(vec!["rails-new", "--rails-version", "7.1.0", "my_app"]);
let rails_version = m.get_one::<String>("rails_version").unwrap();
assert_eq!(rails_version, "7.1.0");

// Test short form
let m = Cli::command().get_matches_from(vec!["rails-new", "-r", "7.1.0", "my_app"]);
let rails_version = m.get_one::<String>("rails_version").unwrap();
assert_eq!(rails_version, "7.1.0");

Ok(())
}

#[test]
fn rebuild_flag() -> Result<(), Box<dyn std::error::Error>> {
use clap::CommandFactory;

let m = Cli::command().get_matches_from(vec!["rails-new", "--rebuild", "my_app"]);
let rebuild = m.get_flag("rebuild");
assert!(rebuild);

// Test default value (false)
let m = Cli::command().get_matches_from(vec!["rails-new", "my_app"]);
let rebuild = m.get_flag("rebuild");
assert!(!rebuild);

Ok(())
}
}

0 comments on commit 262dc86

Please sign in to comment.