Skip to content

Commit 262dc86

Browse files
committed
Add tests for the last three commits
1 parent 1f07fca commit 262dc86

File tree

2 files changed

+141
-0
lines changed

2 files changed

+141
-0
lines changed

src/docker_client.rs

+93
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,72 @@ mod tests {
206206
);
207207
}
208208

209+
#[test]
210+
fn build_image_with_rebuild_flag() {
211+
let command = DockerClient::build_image("3.2.3", Some("7.1.3"), None, None, true);
212+
213+
let args: Vec<&OsStr> = command.get_args().collect();
214+
215+
assert_eq!(
216+
args,
217+
&[
218+
"build",
219+
"--no-cache",
220+
"--build-arg",
221+
"RUBY_VERSION=3.2.3",
222+
"--build-arg",
223+
"RAILS_VERSION=7.1.3",
224+
"-t",
225+
"rails-new-3.2.3-7.1.3",
226+
"-",
227+
]
228+
);
229+
}
230+
231+
#[test]
232+
fn build_image_without_rails_version() {
233+
let command = DockerClient::build_image("3.2.3", None, None, None, false);
234+
235+
let args: Vec<&OsStr> = command.get_args().collect();
236+
237+
assert_eq!(
238+
args,
239+
&[
240+
"build",
241+
"--build-arg",
242+
"RUBY_VERSION=3.2.3",
243+
"-t",
244+
"rails-new-3.2.3",
245+
"-",
246+
]
247+
);
248+
}
249+
250+
#[test]
251+
fn build_image_with_both_ids() {
252+
let command = DockerClient::build_image("3.2.3", Some("7.1.3"), Some(1000), Some(1000), false);
253+
254+
let args: Vec<&OsStr> = command.get_args().collect();
255+
256+
assert_eq!(
257+
args,
258+
&[
259+
"build",
260+
"--build-arg",
261+
"RUBY_VERSION=3.2.3",
262+
"--build-arg",
263+
"RAILS_VERSION=7.1.3",
264+
"--build-arg",
265+
"USER_ID=1000",
266+
"--build-arg",
267+
"GROUP_ID=1000",
268+
"-t",
269+
"rails-new-3.2.3-7.1.3",
270+
"-",
271+
]
272+
);
273+
}
274+
209275
#[test]
210276
fn run_image() {
211277
let command = DockerClient::run_image("3.2.3", Some("7.1.3"), vec!["my_app".to_string()]);
@@ -235,6 +301,33 @@ mod tests {
235301
);
236302
}
237303

304+
#[test]
305+
fn run_image_without_rails_version() {
306+
let command = DockerClient::run_image("3.2.3", None, vec!["my_app".to_string()]);
307+
308+
let binding = current_dir().unwrap();
309+
let absolute_path = canonicalize_os_path(&binding).unwrap();
310+
let current_dir = absolute_path.to_str().unwrap();
311+
312+
let args: Vec<&OsStr> = command.get_args().collect();
313+
314+
assert_eq!(
315+
args,
316+
&[
317+
"run",
318+
"--rm",
319+
"-v",
320+
&format!("{}:{}", current_dir, current_dir),
321+
"-w",
322+
current_dir,
323+
"rails-new-3.2.3",
324+
"rails",
325+
"new",
326+
"my_app",
327+
]
328+
);
329+
}
330+
238331
#[test]
239332
fn get_help() {
240333
let command = DockerClient::get_help("3.2.3", Some("7.1.3"));

src/rails_new.rs

+48
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,52 @@ mod tests {
7373

7474
Ok(())
7575
}
76+
77+
#[test]
78+
fn custom_ruby_version() -> Result<(), Box<dyn std::error::Error>> {
79+
use clap::CommandFactory;
80+
81+
let m = Cli::command().get_matches_from(vec!["rails-new", "--ruby-version", "3.2.0", "my_app"]);
82+
let ruby_version = m.get_one::<String>("ruby_version").unwrap();
83+
assert_eq!(ruby_version, "3.2.0");
84+
85+
// Test short form
86+
let m = Cli::command().get_matches_from(vec!["rails-new", "-u", "3.2.0", "my_app"]);
87+
let ruby_version = m.get_one::<String>("ruby_version").unwrap();
88+
assert_eq!(ruby_version, "3.2.0");
89+
90+
Ok(())
91+
}
92+
93+
#[test]
94+
fn rails_version_flag() -> Result<(), Box<dyn std::error::Error>> {
95+
use clap::CommandFactory;
96+
97+
let m = Cli::command().get_matches_from(vec!["rails-new", "--rails-version", "7.1.0", "my_app"]);
98+
let rails_version = m.get_one::<String>("rails_version").unwrap();
99+
assert_eq!(rails_version, "7.1.0");
100+
101+
// Test short form
102+
let m = Cli::command().get_matches_from(vec!["rails-new", "-r", "7.1.0", "my_app"]);
103+
let rails_version = m.get_one::<String>("rails_version").unwrap();
104+
assert_eq!(rails_version, "7.1.0");
105+
106+
Ok(())
107+
}
108+
109+
#[test]
110+
fn rebuild_flag() -> Result<(), Box<dyn std::error::Error>> {
111+
use clap::CommandFactory;
112+
113+
let m = Cli::command().get_matches_from(vec!["rails-new", "--rebuild", "my_app"]);
114+
let rebuild = m.get_flag("rebuild");
115+
assert!(rebuild);
116+
117+
// Test default value (false)
118+
let m = Cli::command().get_matches_from(vec!["rails-new", "my_app"]);
119+
let rebuild = m.get_flag("rebuild");
120+
assert!(!rebuild);
121+
122+
Ok(())
123+
}
76124
}

0 commit comments

Comments
 (0)