feat(infra): auto-commit con 88 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
"""Tests para create_obsidian_note."""
|
||||
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
from create_obsidian_note import create_obsidian_note
|
||||
from read_obsidian_note import read_obsidian_note
|
||||
|
||||
|
||||
def test_crea_nota_con_frontmatter_y_body(tmp_path):
|
||||
# Golden path: crea nota con frontmatter + body y crea el subdir padre.
|
||||
vault = str(tmp_path)
|
||||
path = create_obsidian_note(
|
||||
vault,
|
||||
"Proyectos/Idea.md",
|
||||
body="Primer apunte. [[Proyecto X]].",
|
||||
frontmatter={"title": "Idea", "tags": ["inbox"]},
|
||||
)
|
||||
assert os.path.isfile(path)
|
||||
assert path.endswith("Proyectos/Idea.md")
|
||||
|
||||
note = read_obsidian_note(path)
|
||||
assert note["frontmatter"]["title"] == "Idea"
|
||||
assert note["tags"] == ["inbox"]
|
||||
assert "Primer apunte" in note["body"]
|
||||
assert note["wikilinks"] == ["Proyecto X"]
|
||||
|
||||
|
||||
def test_anade_extension_md_si_falta(tmp_path):
|
||||
# Edge: rel_path sin extension -> se le anade .md.
|
||||
path = create_obsidian_note(str(tmp_path), "Inbox/Nota rapida", body="x")
|
||||
assert path.endswith("Nota rapida.md")
|
||||
assert os.path.isfile(path)
|
||||
|
||||
|
||||
def test_crea_directorios_padre(tmp_path):
|
||||
# Edge: crea toda la jerarquia de carpetas que no existe.
|
||||
path = create_obsidian_note(str(tmp_path), "a/b/c/Honda.md", body="y")
|
||||
assert os.path.isfile(path)
|
||||
assert os.path.isdir(os.path.join(str(tmp_path), "a", "b", "c"))
|
||||
|
||||
|
||||
def test_existente_sin_overwrite_lanza_fileexistserror(tmp_path):
|
||||
# Error path: la nota ya existe y overwrite=False (default).
|
||||
create_obsidian_note(str(tmp_path), "Dup.md", body="original")
|
||||
with pytest.raises(FileExistsError):
|
||||
create_obsidian_note(str(tmp_path), "Dup.md", body="nuevo")
|
||||
|
||||
|
||||
def test_overwrite_true_sobreescribe(tmp_path):
|
||||
# Edge: overwrite=True reemplaza el contenido y devuelve la misma ruta.
|
||||
p1 = create_obsidian_note(str(tmp_path), "Dup.md", body="original")
|
||||
p2 = create_obsidian_note(
|
||||
str(tmp_path), "Dup.md", body="reemplazado", overwrite=True
|
||||
)
|
||||
assert p1 == p2
|
||||
note = read_obsidian_note(p2)
|
||||
assert note["body"].strip() == "reemplazado"
|
||||
|
||||
|
||||
def test_destino_directorio_lanza_isadirectoryerror(tmp_path):
|
||||
# Error path: el destino resuelto ya es un directorio.
|
||||
target = tmp_path / "EsCarpeta.md"
|
||||
target.mkdir()
|
||||
with pytest.raises(IsADirectoryError):
|
||||
create_obsidian_note(str(tmp_path), "EsCarpeta.md", body="x")
|
||||
Reference in New Issue
Block a user