a90b7443e4
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
"""Tests para open_obsidian_vault."""
|
|
|
|
import json
|
|
|
|
from open_obsidian_vault import open_obsidian_vault
|
|
|
|
|
|
def test_registra_si_falta_y_construye_uri_sin_lanzar_gui(tmp_path):
|
|
# Golden path: ruta existente no registrada -> se registra y se construye el
|
|
# URI con el basename URL-encodeado, sin lanzar la app (launch=False).
|
|
cfg = str(tmp_path / "obsidian.json")
|
|
vault = tmp_path / "Mi Vault"
|
|
vault.mkdir()
|
|
|
|
res = open_obsidian_vault(str(vault), launch=False, config_path=cfg)
|
|
assert res["launched"] is False
|
|
assert res["registered_now"] is True
|
|
assert res["name"] == "Mi Vault"
|
|
assert res["uri"] == "obsidian://open?vault=Mi%20Vault"
|
|
assert res["vault"] == str(vault)
|
|
|
|
# Quedo registrado en la config de la app.
|
|
with open(cfg, "r", encoding="utf-8") as f:
|
|
data = json.load(f)
|
|
paths = [e["path"] for e in data["vaults"].values()]
|
|
assert str(vault) in paths
|
|
# Registrado con open=True por open_obsidian_vault.
|
|
entry = next(e for e in data["vaults"].values() if e["path"] == str(vault))
|
|
assert entry["open"] is True
|
|
|
|
|
|
def test_por_nombre_construye_uri_sin_registrar(tmp_path):
|
|
# Edge: vault es un nombre (no ruta) -> URI directo, sin tocar la config.
|
|
cfg = str(tmp_path / "obsidian.json")
|
|
|
|
res = open_obsidian_vault("MiVaultPorNombre", launch=False, config_path=cfg)
|
|
assert res["uri"] == "obsidian://open?vault=MiVaultPorNombre"
|
|
assert res["name"] == "MiVaultPorNombre"
|
|
assert res["registered_now"] is False
|
|
assert res["launched"] is False
|