govctl 0.9.4

Project governance CLI for RFC, ADR, and Work Item management
use super::*;

#[test]
fn test_project_load_error_prefers_error_diagnostic() {
    let diag = project_load_error(
        vec![
            Diagnostic::new(DiagnosticCode::W0109WorkNoActive, "warning", "warn"),
            Diagnostic::new(DiagnosticCode::E0302AdrNotFound, "missing adr", "gov/adr"),
        ],
        std::path::Path::new("gov"),
    );

    assert_eq!(diag.code, DiagnosticCode::E0302AdrNotFound);
    assert_eq!(diag.message, "missing adr");
}

#[test]
fn test_project_load_error_uses_warning_when_no_errors_exist() {
    let diag = project_load_error(
        vec![Diagnostic::new(
            DiagnosticCode::W0109WorkNoActive,
            "warning only",
            "gov/work",
        )],
        std::path::Path::new("gov"),
    );

    assert_eq!(diag.code, DiagnosticCode::W0109WorkNoActive);
    assert_eq!(diag.message, "warning only");
}

#[test]
fn test_project_load_error_falls_back_when_empty() {
    let diag = project_load_error(vec![], std::path::Path::new("gov"));

    assert_eq!(diag.code, DiagnosticCode::E0501ConfigInvalid);
    assert_eq!(diag.message, "Failed to load project");
    assert_eq!(diag.file, "gov");
}