from __future__ import annotations from countryatlas import registry def test_registry_loads() -> None: cs = registry.countries() assert len(cs) >= 200 assert all(c.iso3 == c.id for c in cs) slugs = {c.slug for c in cs} assert len(slugs) == len(cs) inds = registry.indicators() assert len(inds) >= 200 assert all(i.topic in registry.TOPICS for i in inds) gs = registry.groups_by_id() assert "world" in gs and len(gs["world"].members) == len(cs) assert "oecd" in gs and "CAN" in gs["oecd"].members def test_lookup_maps_codes() -> None: lk = registry.lookup() assert lk.from_iso3("CAN") == "CAN" assert lk.from_iso3("UNK") == "XKX" assert lk.from_iso3("WLD") is None assert lk.from_iso3("") is None assert lk.from_iso2("GB") == "GBR" assert lk.from_name("Viet Nam") == "VNM" def test_source_specs_filter() -> None: wb = registry.source_specs(connector="worldbank") assert wb and all(s.connector == "worldbank" for s in wb) one = registry.source_specs(indicator="gdp-per-capita") assert {s.indicator_id for s in one} == {"gdp-per-capita"} assert one[0].priority <= one[-1].priority def test_similarity_and_insights_registries_reference_known_indicators() -> None: from countryatlas.pipeline.insights import insight_templates from countryatlas.pipeline.similarity import similarity_config known = set(registry.indicators_by_id()) cfg = similarity_config() assert set(cfg["modes"]) == {"overall", "economic", "demographic", "energy", "social"} for spec in cfg["modes"].values(): for f in spec["features"]: assert f["indicator"] in known, f assert len(cfg["dna"]) == 9 templates = insight_templates() assert len(templates) >= 12 assert all(t["indicator"] in known for t in templates)