helm-schema-ir 0.0.6

Generate an accurate JSON schema for any helm chart
Documentation
use std::collections::{BTreeMap, BTreeSet};

use test_util::prelude::sim_assert_eq;

use crate::observed_facts::{HintGrade, HintIntent, HintScope, ObservedFacts};

#[test]
fn hint_grades_absorb_without_parallel_lanes() {
    let grades = [
        HintGrade::DECLARED,
        HintGrade::GUARDED_DECLARED,
        HintGrade::FALLBACK,
        HintGrade::GUARDED_FALLBACK,
        HintGrade::TESTED,
    ];
    let mut observed = ObservedFacts::default();
    for (index, grade) in grades.into_iter().enumerate() {
        let path = format!("path{index}");
        let hints = BTreeSet::from(["string".to_owned()]);
        observed.extend_type_hints(grade, &path, &hints);
        sim_assert_eq!(
            have: observed.type_hints.get(&grade),
            want: Some(&BTreeMap::from([(path, hints)]))
        );
    }

    let guarded_tested = HintGrade {
        scope: HintScope::Guarded,
        intent: HintIntent::Tested,
    };
    let mut other = ObservedFacts::default();
    other.insert_type_hint(guarded_tested, "predicate".to_owned(), "boolean");
    observed.absorb(&other);

    sim_assert_eq!(
        have: observed.type_hints.get(&guarded_tested),
        want: Some(&BTreeMap::from([(
            "predicate".to_owned(),
            BTreeSet::from(["boolean".to_owned()]),
        )]))
    );
}