"""Tests para parse_obsidian_frontmatter."""

from parse_obsidian_frontmatter import parse_obsidian_frontmatter


def test_frontmatter_basico():
    note = "---\ntitle: My Note\ntags:\n  - a\n  - b\n---\n\nHello [[other]]."
    result = parse_obsidian_frontmatter(note)
    assert result["frontmatter"] == {"title": "My Note", "tags": ["a", "b"]}
    assert result["body"] == "\nHello [[other]]."


def test_crlf_line_endings():
    crlf = "---\r\ntitle: X\r\nstatus: done\r\n---\r\nbody line\r\nsecond line"
    result = parse_obsidian_frontmatter(crlf)
    assert result["frontmatter"] == {"title": "X", "status": "done"}
    assert "body line" in result["body"]


def test_sin_frontmatter_devuelve_content_completo():
    plain = "just a body, no frontmatter\nwith two lines"
    result = parse_obsidian_frontmatter(plain)
    assert result == {"frontmatter": {}, "body": plain}


def test_frontmatter_sin_cierre_es_body():
    broken = "---\ntitle: X\nno closing delimiter\nmore text"
    result = parse_obsidian_frontmatter(broken)
    assert result == {"frontmatter": {}, "body": broken}


def test_frontmatter_vacio():
    empty = "---\n---\nbody after empty frontmatter"
    result = parse_obsidian_frontmatter(empty)
    # An empty YAML block parses to None (not a dict) -> treated as no frontmatter.
    assert result == {"frontmatter": {}, "body": empty}


def test_yaml_invalido_es_body():
    bad = "---\nthis: is: invalid: yaml: ::\n---\nbody"
    result = parse_obsidian_frontmatter(bad)
    assert result == {"frontmatter": {}, "body": bad}


def test_content_vacio():
    result = parse_obsidian_frontmatter("")
    assert result == {"frontmatter": {}, "body": ""}
