diff --git a/tests/ui/src/imag_tag.rs b/tests/ui/src/imag_tag.rs index 352dcf25..77784a1e 100644 --- a/tests/ui/src/imag_tag.rs +++ b/tests/ui/src/imag_tag.rs @@ -34,6 +34,14 @@ pub fn call(tmpdir: &TempDir, args: &[&str]) -> Vec { crate::imag::stdout_of_command(binary) } +pub fn call_give_ids(tmpdir: &TempDir, args: &[&str]) -> Vec { + let mut binary = binary(tmpdir); + binary.stdin(std::process::Stdio::inherit()); + binary.args(args); + debug!("Command = {:?}", binary); + crate::imag::stdout_of_command(binary) +} + #[test] fn test_new_entry_has_no_tags() { crate::setup_logging(); @@ -94,3 +102,43 @@ fn test_adding_twice_does_not_add_twice() { assert_eq!(output[0], "tag"); } +#[test] +fn test_listing_entries_with_certain_tag() { + crate::setup_logging(); + let imag_home = crate::imag::make_temphome(); + crate::imag_init::call(&imag_home); + crate::imag_create::call(&imag_home, &["test1", "test2", "test3"]); + let _ = call(&imag_home, &["test1", "add", "tag1"]); + let _ = call(&imag_home, &["test2", "add", "tag2"]); + let _ = call(&imag_home, &["test3", "add", "tag3"]); + + let output = call_give_ids(&imag_home, &["present", "tag1"]); + debug!("output = {:?}", output); + + assert!(!output.is_empty()); + assert_eq!(output.len(), 1); + assert!(output[0].contains("test1")); + assert!(output.iter().all(|s| !s.contains("test2"))); + assert!(output.iter().all(|s| !s.contains("test3"))); +} + +#[test] +fn test_listing_entries_without_certain_tag() { + crate::setup_logging(); + let imag_home = crate::imag::make_temphome(); + crate::imag_init::call(&imag_home); + crate::imag_create::call(&imag_home, &["test1", "test2", "test3"]); + let _ = call(&imag_home, &["test1", "add", "tag1"]); + let _ = call(&imag_home, &["test2", "add", "tag2"]); + let _ = call(&imag_home, &["test3", "add", "tag3"]); + + let output = call_give_ids(&imag_home, &["missing", "tag1"]); + debug!("output = {:?}", output); + + assert!(!output.is_empty()); + assert_eq!(output.len(), 2); + assert!(output.iter().any(|s| s.contains("test2"))); + assert!(output.iter().any(|s| s.contains("test3"))); + assert!(output.iter().all(|s| !s.contains("test1"))); +} +