helm-schema-k8s 0.0.4

Generate an accurate JSON schema for any helm chart
Documentation
use super::*;
use test_util::prelude::sim_assert_eq;

fn candidate(
    api_version: &str,
    source: InferenceSource,
    origin: ProviderOrigin,
) -> ApiVersionCandidate {
    ApiVersionCandidate {
        api_version: api_version.to_string(),
        source,
        origin,
    }
}

#[test]
fn chart_local_crd_candidate_beats_remote_catalog_candidate() {
    let outcome = aggregate(vec![
        candidate(
            "remote.example.com/v1",
            InferenceSource::Shortlist,
            ProviderOrigin::DefaultCatalog,
        ),
        candidate(
            "local.example.com/v1",
            InferenceSource::ChartLocalCrd,
            ProviderOrigin::ChartLocalCrd,
        ),
    ]);

    let ApiVersionInferenceOutcome::Resolved {
        api_version,
        source,
        origin,
    } = outcome
    else {
        panic!("expected resolved chart-local CRD candidate, got {outcome:?}");
    };
    sim_assert_eq!(
        have: (api_version.as_str(), source, origin),
        want: (
            "local.example.com/v1",
            InferenceSource::ChartLocalCrd,
            ProviderOrigin::ChartLocalCrd
        )
    );
}

#[test]
fn explicit_override_candidate_beats_chart_local_crd_candidate() {
    let outcome = aggregate(vec![
        candidate(
            "local.example.com/v1",
            InferenceSource::ChartLocalCrd,
            ProviderOrigin::ChartLocalCrd,
        ),
        candidate(
            "override.example.com/v1",
            InferenceSource::Shortlist,
            ProviderOrigin::LocalOverride,
        ),
    ]);

    let ApiVersionInferenceOutcome::Resolved {
        api_version,
        source,
        origin,
    } = outcome
    else {
        panic!("expected resolved explicit override candidate, got {outcome:?}");
    };
    sim_assert_eq!(
        have: (api_version.as_str(), source, origin),
        want: (
            "override.example.com/v1",
            InferenceSource::Shortlist,
            ProviderOrigin::LocalOverride
        )
    );
}