provenance-cli 0.2.1

Command-line interface for Provenance requirements traceability
use super::super::{render_domains, render_search};
use super::fixtures::{domain_index_fixture, requirement_fixture, search_fixture};

#[test]
fn domain_index_renders_defined_missing_and_unassigned_sections() {
    let html = render_domains("default", &domain_index_fixture());

    assert!(html.contains("id=\"domain-domain_default\""), "{html}");
    assert!(html.contains("id=\"domain-domain_missing\""), "{html}");
    assert!(html.contains("id=\"unassigned-domain-records\""), "{html}");
    assert!(
        html.contains("href=\"/requirements/req_saveinvoice_split/\""),
        "{html}"
    );
    assert!(html.contains("href=\"/rules/rule_sah_inv_016/\""), "{html}");
    assert!(html.contains("Domain record missing"), "{html}");
    assert!(html.contains("1 group"), "{html}");
}

#[test]
fn domain_index_uses_singular_group_grammar() {
    let mut page = domain_index_fixture();
    page.groups.truncate(1);

    let html = render_domains("default", &page);

    assert!(html.contains("1 group."), "{html}");
    assert!(!html.contains("1 groups"), "{html}");
}

#[test]
fn search_renders_safe_readable_dom_entries_and_shipped_script() {
    let html = render_search("default", &search_fixture());

    assert!(html.contains("id=\"wiki-search\""), "{html}");
    assert!(
        html.contains("data-search-title=\"Invoice & participant\""),
        "{html}"
    );
    assert!(
        html.contains("data-search-statement=\"Invoice & participant statement\""),
        "{html}"
    );
    assert!(
        html.contains("href=\"/requirements/req_saveinvoice_split/\""),
        "{html}"
    );
    assert!(!html.contains("search-index.json"), "{html}");
    assert!(!html.contains("fetch("), "{html}");
    assert!(!html.contains("data-search-entry hidden"), "{html}");
    assert!(
        html.contains("placeholder=\"e.g. Invoice & participant\""),
        "{html}"
    );
}

#[test]
fn requirement_domain_classification_links_to_its_section() {
    let html = super::super::render_requirement("default", &requirement_fixture());
    assert!(
        html.contains("href=\"/domains/#domain-dom_invoicing\""),
        "{html}"
    );
}