a90b7443e4
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
"""Tests para unregister_obsidian_vault."""
|
|
|
|
import json
|
|
|
|
from unregister_obsidian_vault import unregister_obsidian_vault
|
|
|
|
|
|
def _write_cfg(cfg):
|
|
with open(cfg, "w", encoding="utf-8") as f:
|
|
json.dump(
|
|
{
|
|
"extra": "preservar",
|
|
"appVersionLastUsed": "1.5.3",
|
|
"vaults": {
|
|
"aaaaaaaaaaaaaaaa": {"path": "/a/Alpha", "ts": 100, "open": True},
|
|
"bbbbbbbbbbbbbbbb": {"path": "/b/Beta", "ts": 200, "open": False},
|
|
},
|
|
},
|
|
f,
|
|
)
|
|
|
|
|
|
def _read(cfg):
|
|
with open(cfg, "r", encoding="utf-8") as f:
|
|
return json.load(f)
|
|
|
|
|
|
def test_desregistra_por_path(tmp_path):
|
|
# Golden path: quita la entrada cuya 'path' coincide con la ruta dada.
|
|
cfg = str(tmp_path / "obsidian.json")
|
|
_write_cfg(cfg)
|
|
|
|
res = unregister_obsidian_vault("/a/Alpha", config_path=cfg)
|
|
assert res["removed"] is True
|
|
assert res["id"] == "aaaaaaaaaaaaaaaa"
|
|
assert res["path"] == "/a/Alpha"
|
|
assert res["backup_path"] == cfg + ".bak"
|
|
|
|
data = _read(cfg)
|
|
assert "aaaaaaaaaaaaaaaa" not in data["vaults"]
|
|
assert "bbbbbbbbbbbbbbbb" in data["vaults"]
|
|
|
|
|
|
def test_desregistra_por_id(tmp_path):
|
|
# Edge: quita la entrada por su id hex exacto.
|
|
cfg = str(tmp_path / "obsidian.json")
|
|
_write_cfg(cfg)
|
|
|
|
res = unregister_obsidian_vault("bbbbbbbbbbbbbbbb", config_path=cfg)
|
|
assert res["removed"] is True
|
|
assert res["id"] == "bbbbbbbbbbbbbbbb"
|
|
assert res["path"] == "/b/Beta"
|
|
|
|
data = _read(cfg)
|
|
assert "bbbbbbbbbbbbbbbb" not in data["vaults"]
|
|
|
|
|
|
def test_preserva_resto_del_json_al_quitar_entrada(tmp_path):
|
|
# Edge: las demas claves y vaults sobreviven al desregistro.
|
|
cfg = str(tmp_path / "obsidian.json")
|
|
_write_cfg(cfg)
|
|
|
|
unregister_obsidian_vault("/a/Alpha", config_path=cfg)
|
|
|
|
data = _read(cfg)
|
|
assert data["extra"] == "preservar"
|
|
assert data["appVersionLastUsed"] == "1.5.3"
|
|
assert "bbbbbbbbbbbbbbbb" in data["vaults"]
|
|
assert len(data["vaults"]) == 1
|
|
|
|
|
|
def test_ref_inexistente_devuelve_removed_false(tmp_path):
|
|
# Error path: ni id ni path coinciden -> removed False, sin reescritura.
|
|
cfg = str(tmp_path / "obsidian.json")
|
|
_write_cfg(cfg)
|
|
|
|
res = unregister_obsidian_vault("/no/existe", config_path=cfg)
|
|
assert res["removed"] is False
|
|
assert res["id"] == ""
|
|
assert res["backup_path"] == ""
|
|
|
|
data = _read(cfg)
|
|
assert len(data["vaults"]) == 2
|