web-capture 0.3.5

CLI and microservice to render web pages as HTML, Markdown, or PNG
Documentation
use web_capture::verify::{
    normalize_code, normalize_text, verify_markdown_content, Heading, VerifyOptions, WebContent,
};

#[test]
fn test_normalize_text_whitespace() {
    assert_eq!(normalize_text("  hello   world  "), "hello world");
}

#[test]
fn test_normalize_text_unicode() {
    let result = normalize_text("test\u{00D7}value");
    assert!(result.contains('x'));
}

#[test]
fn test_normalize_text_latex() {
    let result = normalize_text("$E = mc^2$");
    assert_eq!(result, "e = mc\u{00B2}");
}

#[test]
fn test_normalize_code() {
    let result = normalize_code("  function()  {  }  ");
    assert_eq!(result, "function() { }");
}

#[test]
fn test_verify_title_present() {
    let content = WebContent {
        title: Some("Hello World".to_string()),
        ..Default::default()
    };
    let result = verify_markdown_content(
        &content,
        "# Hello World\nSome content",
        &VerifyOptions::default(),
    );
    assert!(result.success);
    assert!(!result.missing.title);
}

#[test]
fn test_verify_title_missing() {
    let content = WebContent {
        title: Some("Missing Title".to_string()),
        ..Default::default()
    };
    let result = verify_markdown_content(
        &content,
        "# Different Title\nSome content",
        &VerifyOptions::default(),
    );
    assert!(result.missing.title);
}

#[test]
fn test_verify_headings() {
    let content = WebContent {
        headings: vec![
            Heading {
                level: 2,
                text: "Introduction".to_string(),
            },
            Heading {
                level: 2,
                text: "Conclusion".to_string(),
            },
        ],
        ..Default::default()
    };
    let result = verify_markdown_content(
        &content,
        "## Introduction\nText\n## Conclusion\nMore text",
        &VerifyOptions::default(),
    );
    assert_eq!(result.passed_checks, 2);
    assert!(result.missing.headings.is_empty());
}

#[test]
fn test_verify_empty_content() {
    let content = WebContent::default();
    let result = verify_markdown_content(&content, "Some markdown", &VerifyOptions::default());
    assert!(result.success);
    assert_eq!(result.total_checks, 0);
}