cuando termines y verifica que esté todo subido
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
"""Tests para register_obsidian_vault."""
|
||||
|
||||
import json
|
||||
import os
|
||||
|
||||
from register_obsidian_vault import register_obsidian_vault
|
||||
|
||||
|
||||
def _read(cfg):
|
||||
with open(cfg, "r", encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
def test_registra_entrada_nueva(tmp_path):
|
||||
# Golden path: registra un vault nuevo en una config inexistente.
|
||||
cfg = str(tmp_path / "obsidian.json")
|
||||
vault = tmp_path / "MiVault"
|
||||
vault.mkdir()
|
||||
|
||||
res = register_obsidian_vault(str(vault), open=True, config_path=cfg)
|
||||
assert res["registered"] is True
|
||||
assert res["already"] is False
|
||||
assert res["open"] is True
|
||||
assert len(res["id"]) == 16
|
||||
assert res["path"] == str(vault)
|
||||
|
||||
data = _read(cfg)
|
||||
assert res["id"] in data["vaults"]
|
||||
entry = data["vaults"][res["id"]]
|
||||
assert entry["path"] == str(vault)
|
||||
assert entry["open"] is True
|
||||
assert isinstance(entry["ts"], int) and entry["ts"] > 0
|
||||
|
||||
|
||||
def test_segundo_registro_mismo_path_no_duplica_y_devuelve_already(tmp_path):
|
||||
# Edge: idempotencia por path. La segunda llamada no crea otra entrada.
|
||||
cfg = str(tmp_path / "obsidian.json")
|
||||
vault = tmp_path / "MiVault"
|
||||
vault.mkdir()
|
||||
|
||||
r1 = register_obsidian_vault(str(vault), open=True, config_path=cfg)
|
||||
r2 = register_obsidian_vault(str(vault), open=True, config_path=cfg)
|
||||
|
||||
assert r2["already"] is True
|
||||
assert r2["registered"] is False
|
||||
assert r2["id"] == r1["id"]
|
||||
|
||||
data = _read(cfg)
|
||||
assert len(data["vaults"]) == 1
|
||||
|
||||
|
||||
def test_actualiza_flag_open_de_entrada_existente(tmp_path):
|
||||
# Edge: misma ruta pero flag open distinto -> actualiza y reescribe.
|
||||
cfg = str(tmp_path / "obsidian.json")
|
||||
vault = tmp_path / "MiVault"
|
||||
vault.mkdir()
|
||||
|
||||
register_obsidian_vault(str(vault), open=False, config_path=cfg)
|
||||
r2 = register_obsidian_vault(str(vault), open=True, config_path=cfg)
|
||||
|
||||
assert r2["already"] is True
|
||||
assert r2["open"] is True
|
||||
|
||||
data = _read(cfg)
|
||||
assert data["vaults"][r2["id"]]["open"] is True
|
||||
|
||||
|
||||
def test_preserva_claves_extra_de_nivel_superior(tmp_path):
|
||||
# Edge: claves ajenas a "vaults" deben sobrevivir a la escritura.
|
||||
cfg = str(tmp_path / "obsidian.json")
|
||||
with open(cfg, "w", encoding="utf-8") as f:
|
||||
json.dump(
|
||||
{
|
||||
"appVersionLastUsed": "1.5.3",
|
||||
"updateDisabled": True,
|
||||
"vaults": {
|
||||
"0000000000000000": {"path": "/otro/Vault", "ts": 111, "open": False}
|
||||
},
|
||||
},
|
||||
f,
|
||||
)
|
||||
|
||||
vault = tmp_path / "Nuevo"
|
||||
vault.mkdir()
|
||||
register_obsidian_vault(str(vault), open=True, config_path=cfg)
|
||||
|
||||
data = _read(cfg)
|
||||
assert data["appVersionLastUsed"] == "1.5.3"
|
||||
assert data["updateDisabled"] is True
|
||||
# La entrada previa de otro vault se conserva.
|
||||
assert "0000000000000000" in data["vaults"]
|
||||
assert len(data["vaults"]) == 2
|
||||
|
||||
|
||||
def test_crea_config_y_directorios_si_no_existe(tmp_path):
|
||||
# Edge: la config y sus directorios padre no existen y se crean.
|
||||
cfg = str(tmp_path / "sub" / "dir" / "obsidian.json")
|
||||
vault = tmp_path / "MiVault"
|
||||
vault.mkdir()
|
||||
|
||||
res = register_obsidian_vault(str(vault), config_path=cfg)
|
||||
assert res["registered"] is True
|
||||
assert os.path.isfile(cfg)
|
||||
# Sin archivo previo no hay backup.
|
||||
assert res["backup_path"] == ""
|
||||
|
||||
|
||||
def test_hace_backup_bak_antes_de_sobreescribir(tmp_path):
|
||||
# Edge: una segunda escritura sobre config existente genera backup .bak.
|
||||
cfg = str(tmp_path / "obsidian.json")
|
||||
v1 = tmp_path / "V1"
|
||||
v1.mkdir()
|
||||
v2 = tmp_path / "V2"
|
||||
v2.mkdir()
|
||||
|
||||
register_obsidian_vault(str(v1), config_path=cfg) # crea config
|
||||
res = register_obsidian_vault(str(v2), config_path=cfg) # ahora si hay backup
|
||||
|
||||
assert res["backup_path"] == cfg + ".bak"
|
||||
assert os.path.isfile(cfg + ".bak")
|
||||
Reference in New Issue
Block a user