"""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