"""Tests del library loader.""" from __future__ import annotations import json from pathlib import Path from vmssailor.library.loader import load_library def test_loader_returns_result_with_format() -> None: r = load_library() s = r.format() assert "Library load summary" in s assert "Vessels" in s assert "EquipmentModels" in s def test_loader_handles_corrupt_json(tmp_path: Path) -> None: # Construimos una biblioteca falsa con un JSON malo fake_lib = tmp_path / "lib" (fake_lib / "vessels").mkdir(parents=True) (fake_lib / "vessels" / "broken.json").write_text("{ not valid json", encoding="utf-8") (fake_lib / "equipment").mkdir(parents=True) (fake_lib / "rules").mkdir(parents=True) # systems_catalog.json mínimo válido (fake_lib / "systems_catalog.json").write_text( json.dumps({"_meta": {"version": 1}, "categories": []}), encoding="utf-8" ) r = load_library(fake_lib) assert not r.ok() assert any("broken.json" in i.path for i in r.errors) def test_loader_handles_missing_systems_catalog(tmp_path: Path) -> None: fake_lib = tmp_path / "lib" fake_lib.mkdir() r = load_library(fake_lib) assert any("systems_catalog.json" in i.path for i in r.errors)