dictx 0.1.2

A fast, colorful terminal dictionary with offline indexes and optional AI explanations.
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"));
}