kimun-notes 0.2.0

A terminal-based notes application
Documentation
use kimun_notes::cli::metadata_extractor::{extract_tags, extract_links, extract_headers};

#[test]
fn extract_tags_from_hashtags_and_frontmatter() {
    let content = r#"---
tags: ["project", "urgent"]
tag: meeting
---
# Meeting Notes

This is #important and #todo items.
Also #project-related stuff.
"#;

    let tags = extract_tags(content);
    let mut expected = vec!["project", "urgent", "meeting", "important", "todo", "project-related"];
    expected.sort();
    let mut actual = tags;
    actual.sort();

    assert_eq!(actual, expected);
}

#[test]
fn extract_markdown_links() {
    let content = r#"
# Notes

See [other note](other-note.md) and [external](https://example.com).
Also check [[wikilink]] and ![image](image.png).
"#;

    let links = extract_links(content);
    let expected = vec!["other-note.md", "https://example.com", "wikilink", "image.png"];
    assert_eq!(links, expected);
}

#[test]
fn extract_markdown_headers() {
    let content = r#"# Main Title

## Section 1

### Subsection A

## Section 2
"#;

    let headers = extract_headers(content);
    assert_eq!(headers.len(), 4);
    assert_eq!(headers[0].text, "Main Title");
    assert_eq!(headers[0].level, 1);
    assert_eq!(headers[1].text, "Section 1");
    assert_eq!(headers[1].level, 2);
}