use assert_cmd::Command;
use predicates::prelude::*;
#[test]
fn help_mentions_core_commands() {
let mut cmd = Command::cargo_bin("dictx").unwrap();
cmd.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("lookup"))
.stdout(predicate::str::contains("build"))
.stdout(predicate::str::contains("ai"));
}
#[test]
fn config_set_get_roundtrip() {
let temp = tempfile::tempdir().unwrap();
let config = temp.path().join("config.toml");
Command::cargo_bin("dictx")
.unwrap()
.args([
"--config",
config.to_str().unwrap(),
"config",
"set",
"search.default_limit",
"7",
])
.assert()
.success();
Command::cargo_bin("dictx")
.unwrap()
.args([
"--config",
config.to_str().unwrap(),
"config",
"get",
"search.default_limit",
])
.assert()
.success()
.stdout(predicate::str::contains("7"));
}
#[test]
fn query_without_built_index_explains_build_step() {
let temp = tempfile::tempdir().unwrap();
let config = temp.path().join("config.toml");
let index_dir = temp.path().join("missing-index");
Command::cargo_bin("dictx")
.unwrap()
.args([
"--config",
config.to_str().unwrap(),
"config",
"set",
"index_dir",
index_dir.to_str().unwrap(),
])
.assert()
.success();
Command::cargo_bin("dictx")
.unwrap()
.args([
"--config",
config.to_str().unwrap(),
"zh",
"老师",
"--format",
"plain",
])
.assert()
.failure()
.stderr(predicate::str::contains("没有可查询索引"))
.stderr(predicate::str::contains("dictx build"));
}