provenance-cli 0.2.3

Command-line interface for Provenance requirements traceability
use super::super::load_corpus;
use super::fixtures::*;
use camino::Utf8PathBuf;
use provenance_core::RequirementStatus;
use provenance_core::SUPPORTED_SCHEMA_VERSION;

#[test]
fn load_corpus_reads_state_from_disk() {
    let dir = tempfile::tempdir().unwrap();
    let repo = Utf8PathBuf::from_path_buf(dir.path().to_path_buf()).unwrap();
    let layout = provenance_store::layout::ProvenanceLayout::new(repo.clone());
    let manifest_path = layout.manifest_path();
    std::fs::create_dir_all(manifest_path.parent().unwrap()).unwrap();
    std::fs::write(
        &manifest_path,
        serde_json::json!({"schema_version": SUPPORTED_SCHEMA_VERSION.0,"disposition_actor_ids":[],"scopes":[{"id":"default","path_prefix":"."}]}).to_string(),
    )
    .unwrap();
    provenance_store::jsonl::write_jsonl_atomic(
        &provenance_store::shards::requirements_path(&layout, &scope_id()),
        &[requirement(
            "req_root",
            "Platform shall manage invoicing",
            RequirementStatus::Active,
            vec![],
        )],
    )
    .unwrap();

    let corpus = load_corpus(repo, "default".to_string(), None).unwrap();
    assert_eq!(corpus.scope, "default");
    assert_eq!(corpus.requirements.len(), 1);
    assert_eq!(corpus.index.counts.requirements, 1);
}