feat(infra): auto-commit con 88 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-11 00:16:46 +02:00
parent 6bc97df5c0
commit eb8dbf66a1
126 changed files with 10933 additions and 287 deletions
@@ -0,0 +1,61 @@
"""Tests para read_obsidian_note."""
import pytest
from read_obsidian_note import read_obsidian_note
def _write(path, content):
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(content, encoding="utf-8")
return str(path)
def test_lee_nota_con_frontmatter_y_wikilinks(tmp_path):
# Golden path: nota con frontmatter YAML + body con wikilinks.
note = _write(
tmp_path / "Idea.md",
"---\ntitle: Idea\ntags: [proyecto, wip]\n---\n\n"
"Cuerpo con [[Otra Nota]] y [[Tercera|alias]].",
)
result = read_obsidian_note(note)
assert result["path"] == note
assert result["frontmatter"]["title"] == "Idea"
assert result["tags"] == ["proyecto", "wip"]
assert result["wikilinks"] == ["Otra Nota", "Tercera"]
assert "Cuerpo con" in result["body"]
def test_normaliza_tags_csv_a_lista(tmp_path):
# Edge: tags como CSV en vez de lista YAML.
note = _write(
tmp_path / "CSV.md",
"---\ntitle: CSV\ntags: proyecto, wip , done\n---\n\nTexto.",
)
result = read_obsidian_note(note)
assert result["tags"] == ["proyecto", "wip", "done"]
def test_nota_sin_frontmatter(tmp_path):
# Edge: nota plana sin frontmatter -> frontmatter vacio, tags vacios.
note = _write(tmp_path / "Plana.md", "Solo cuerpo, [[Enlace]] suelto.")
result = read_obsidian_note(note)
assert result["frontmatter"] == {}
assert result["tags"] == []
assert result["wikilinks"] == ["Enlace"]
assert result["body"] == "Solo cuerpo, [[Enlace]] suelto."
def test_archivo_inexistente_lanza_filenotfounderror(tmp_path):
# Error path: ruta inexistente.
with pytest.raises(FileNotFoundError):
read_obsidian_note(str(tmp_path / "no_existe.md"))
def test_directorio_lanza_isadirectoryerror(tmp_path):
# Error path: ruta a directorio, no archivo.
sub = tmp_path / "carpeta"
sub.mkdir()
with pytest.raises(IsADirectoryError):
read_obsidian_note(str(sub))