use assert_cmd::Command;
use predicates::prelude::*;
fn sopsy() -> Command {
Command::cargo_bin("sopsy").expect("binary `sopsy` should build")
}
#[test]
fn help_lists_all_commands() {
sopsy()
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("init"))
.stdout(predicate::str::contains("doctor"))
.stdout(predicate::str::contains("edit"))
.stdout(predicate::str::contains("recipient"))
.stdout(predicate::str::contains("check"));
}
#[test]
fn version_prints_crate_version() {
sopsy()
.arg("--version")
.assert()
.success()
.stdout(predicate::str::contains(env!("CARGO_PKG_VERSION")));
}
#[test]
fn doctor_runs_and_reports_tools() {
sopsy()
.args(["--non-interactive", "doctor"])
.assert()
.success()
.stdout(predicate::str::contains("git"));
}
#[test]
fn recipient_help_lists_subcommands() {
sopsy()
.args(["recipient", "--help"])
.assert()
.success()
.stdout(predicate::str::contains("add"))
.stdout(predicate::str::contains("remove"))
.stdout(predicate::str::contains("list"));
}
#[test]
fn unknown_command_fails() {
sopsy().arg("definitely-not-a-command").assert().failure();
}