use anyhow::Result;
use assert_cmd::prelude::*;
use predicate::str::contains;
use predicates::prelude::*;
use crate::WintsCommand;
#[test]
fn using_unknown_module() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string())
.arg("--module")
.arg("another");
wints
.cmd
.assert()
.failure()
.stdout(contains(" ⚠️ Unknown module 'another'"));
Ok(())
}
#[test]
fn ask_for_terms() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string());
wints
.cmd
.assert()
.success()
.stdout(contains(" ⚠️ No terms passed, can't search anything."))
.stdout(contains(" 🧭 Try with 'repository code'."));
Ok(())
}
#[test]
fn using_dry_run() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string())
.arg("--dry-run");
wints
.cmd
.assert()
.success()
.stdout(contains(" 🌀 Dry-run mode activated."))
.stdout(contains(" ⚠️ No terms passed, can't search anything."))
.stdout(contains(" 🧭 Try with 'repository code'."));
Ok(())
}
#[test]
fn open_urls_with_one_word_from_one_context() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string())
.arg("--dry-run")
.arg("code");
wints
.cmd
.assert()
.success()
.stdout(contains(" 🌀 Dry-run mode activated."))
.stdout(contains(" 🔎 Searching for 'code'..."))
.stdout(contains(" 🌀 Open https://github.com/rlespinasse/wints"))
.stdout(contains(" ✅ Search completed."));
Ok(())
}
#[test]
fn open_urls_with_multiple_words_from_one_context() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string())
.arg("--dry-run")
.arg("repo")
.arg("code");
wints
.cmd
.assert()
.success()
.stdout(contains(" 🌀 Dry-run mode activated."))
.stdout(contains(" 🔎 Searching for 'repo code'..."))
.stdout(contains(" 🌀 Open https://github.com/rlespinasse/wints"))
.stdout(contains(" ✅ Search completed."));
Ok(())
}
#[test]
fn open_urls_with_one_word_from_multiple_contexts() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string())
.arg("--dry-run")
.arg("repo");
wints
.cmd
.assert()
.success()
.stdout(contains(" 🌀 Dry-run mode activated."))
.stdout(contains(" 🔎 Searching for 'repo'..."))
.stdout(contains(" 🌀 Open https://github.com/rlespinasse/wints"))
.stdout(contains(
" 🌀 Open https://github.com/rlespinasse/wints/issues",
))
.stdout(contains(" 🌀 Open https://crates.io/crates/wints"))
.stdout(contains(
" 🌀 Open https://github.com/rlespinasse/wints/blob/v0.x/USAGE.adoc",
))
.stdout(contains(" ✅ Search completed."));
Ok(())
}
#[test]
fn propose_matching_terms_when_some_words_are_unmatched() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string())
.arg("repo")
.arg("source");
wints
.cmd
.assert()
.success()
.stdout(contains(" 🔎 Searching for 'repo source'..."))
.stdout(contains(
" 😢 Missed, try with terms like in 'repository code'.",
))
.stdout(contains(" ✅ Search completed."));
Ok(())
}
#[test]
fn all_words_are_unmatched() -> Result<()> {
let mut wints = WintsCommand::new()?;
wints
.cmd
.arg("--config")
.arg(wints.local_config_dir.display().to_string())
.arg("--global-config")
.arg(wints.home_dir_config_dir.display().to_string())
.arg("git")
.arg("source");
wints
.cmd
.assert()
.success()
.stdout(contains(" 🔎 Searching for 'git source'..."))
.stdout(contains(" 😢 Nothing found, try with another term."))
.stdout(contains(" ✅ Search completed."));
Ok(())
}