dkp 0.4.1

dkp — Domain Knowledge Pack management CLI
Documentation
mod common;

use predicates::prelude::*;
use tempfile::TempDir;

use common::{dkp_cmd, scaffold_pack};

#[test]
fn info_prints_pack_summary() {
    let tmp = TempDir::new().unwrap();
    let pack = scaffold_pack(tmp.path(), "info-pack", "testing");

    dkp_cmd()
        .arg("info")
        .arg(&pack)
        .assert()
        .success()
        .stdout(predicate::str::contains("info-pack"))
        .stdout(predicate::str::contains("testing"));
}

#[test]
fn info_json_output_contains_expected_fields() {
    let tmp = TempDir::new().unwrap();
    let pack = scaffold_pack(tmp.path(), "info-json-pack", "testing");

    let output = dkp_cmd()
        .arg("--output")
        .arg("json")
        .arg("info")
        .arg(&pack)
        .assert()
        .success()
        .get_output()
        .stdout
        .clone();

    let info: serde_json::Value = serde_json::from_slice(&output).unwrap();
    assert_eq!(info["name"], "info-json-pack");
    assert_eq!(info["domain"], "testing");
    assert!(info.get("asset_counts").is_some());
}

#[test]
fn info_nonexistent_pack_fails() {
    let tmp = TempDir::new().unwrap();
    let missing = tmp.path().join("nope");

    dkp_cmd().arg("info").arg(&missing).assert().failure();
}