use assert_cmd::prelude::*; // Add methods on commands use predicates::prelude::*; // Used for writing assertions use std::process::Command; // Run programs #[test] fn adding_a_todo() -> Result<(), Box> { let mut cmd = Command::cargo_bin("todo_cli")?; cmd.arg("add").arg("doing the dishes"); cmd.assert() .stdout(predicate::str::contains("doing the dishes")); Ok(()) } #[test] fn toggle_todo() -> Result<(), Box> { let mut cmd = Command::cargo_bin("todo_cli")?; cmd.arg("toggle").arg("0"); cmd.assert() .stdout(predicate::str::contains("done")); Ok(()) } #[test] fn remove_todo() -> Result<(), Box> { let mut cmd = Command::cargo_bin("todo_cli")?; cmd.arg("remove").arg("1"); cmd.assert() .stdout(predicate::str::contains("removed")); Ok(()) } // TODO: Refactor these tests to be more accurate // TODO: Add more tests for new or uncovered feautures