ito-core 0.1.33

Core functionality and business logic for Ito
Documentation
use super::*;

fn issue(level: &str, path: &str, message: &str) -> ValidationIssue {
    ValidationIssue {
        level: level.to_string(),
        path: path.to_string(),
        message: message.to_string(),
        line: None,
        column: None,
        rule_id: None,
        metadata: None,
    }
}

#[test]
fn finish_non_strict_only_fails_on_errors() {
    let mut builder = ReportBuilder::new(false);
    builder.push(issue("WARNING", "spec.md", "brief purpose"));

    let report = builder.finish();
    assert!(report.valid);
    assert_eq!(report.summary.errors, 0);
    assert_eq!(report.summary.warnings, 1);
}

#[test]
fn finish_strict_fails_on_warnings() {
    let mut builder = report(true);
    builder.push(issue("WARNING", "spec.md", "brief purpose"));

    let result = builder.finish();
    assert!(!result.valid);
    assert_eq!(result.summary.errors, 0);
    assert_eq!(result.summary.warnings, 1);
}

#[test]
fn extend_collects_multiple_issues() {
    let mut builder = report(false);
    builder.extend(vec![
        issue("ERROR", "a.md", "a"),
        issue("INFO", "b.md", "b"),
        issue("WARNING", "c.md", "c"),
    ]);

    let result = builder.finish();
    assert!(!result.valid);
    assert_eq!(result.issues.len(), 3);
    assert_eq!(result.summary.errors, 1);
    assert_eq!(result.summary.warnings, 1);
    assert_eq!(result.summary.info, 1);
}