use assert_cmd::{assert::OutputAssertExt, prelude::CommandCargoExt}; use predicates::prelude::*; use std::process::Command; #[test] fn include_none_didit() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kenall-rs")?; cmd.arg("100-0012"); cmd.assert().success(); Ok(()) } #[test] fn normal_eight_digit() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kenall-rs")?; cmd.arg("1000001"); cmd.assert().stdout(predicate::str::contains("千代田区")); Ok(()) } #[test] fn kyoto_street_address() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kenall-rs")?; cmd.arg("6048012"); cmd.assert() .stdout(predicate::str::contains("先斗町通三条下る")); Ok(()) } #[test] fn no_result_found() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kenall-rs")?; cmd.arg("9999999"); cmd.assert().failure().stderr(predicate::str::contains( "Sorry, there was no address associated with the post code", )); Ok(()) } #[test] fn more_than_seven_digits() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kenall-rs")?; cmd.arg("1000012909090909090"); cmd.assert() .failure() .stderr(predicate::str::contains("Please enter the postcode with 7digit like following: `kenall-rs 1000000` or `kenall-rs 100-0000`")); Ok(()) } #[test] fn less_than_seven_digits() -> Result<(), Box> { let mut cmd = Command::cargo_bin("kenall-rs")?; cmd.arg("123"); cmd.assert() .failure() .stderr(predicate::str::contains("Please enter the postcode with 7digit like following: `kenall-rs 1000000` or `kenall-rs 100-0000`")); Ok(()) }