mirror of
https://github.com/zvx-echo6/meshai.git
synced 2026-08-26 17:31:34 +00:00
Adds coverage.excluded_adapters: adapters listed here ignore the universal coverage bbox and use their own config (the "advanced override", native only). _coverage_for() returns None for excluded adapters; satpass seeding respects it too. Backend for the GUI override toggles. Co-authored-by: Matt Johnson <mj@k7zvx.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
115 lines
4.1 KiB
Python
115 lines
4.1 KiB
Python
"""Tests for Phase 3a coverage override (per-adapter excluded_adapters escape hatch).
|
|
|
|
Verifies:
|
|
1. Coverage.excluded_adapters defaults to [].
|
|
2. A store built with coverage_bbox + coverage_excluded=["traffic"]:
|
|
- _coverage_for("traffic") returns None (excluded).
|
|
- _coverage_for("usgs_quake") returns a dict (non-excluded still derives).
|
|
3. With coverage_excluded=[]: _coverage_for("traffic") returns a dict.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import field
|
|
from unittest.mock import MagicMock
|
|
|
|
import pytest
|
|
|
|
# Shared reference bbox (Magic Valley / south-central Idaho)
|
|
IDAHO_BOX = [-116.5, 42.0, -112.0, 44.0]
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Helpers — minimal EnvironmentalConfig mock (mirrors test_coverage_wiring.py)
|
|
# ---------------------------------------------------------------------------
|
|
|
|
def _make_env_cfg():
|
|
"""Minimal EnvironmentalConfig mock with all adapters disabled."""
|
|
env_cfg = MagicMock()
|
|
for attr in ("nws", "swpc", "ducting", "fires", "avalanche", "usgs",
|
|
"usgs_quake", "traffic", "roads511", "wzdx", "satpass", "firms"):
|
|
sub = MagicMock()
|
|
sub.enabled = False
|
|
sub.feed_source = "central"
|
|
setattr(env_cfg, attr, sub)
|
|
env_cfg.nws_zones = []
|
|
return env_cfg
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Coverage dataclass
|
|
# ---------------------------------------------------------------------------
|
|
|
|
def test_coverage_excluded_adapters_default():
|
|
"""Coverage.excluded_adapters defaults to an empty list."""
|
|
from meshai.config import Coverage
|
|
cov = Coverage()
|
|
assert cov.excluded_adapters == []
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# EnvironmentalStore exclusion gate
|
|
# ---------------------------------------------------------------------------
|
|
|
|
def test_coverage_for_excluded_adapter_returns_none():
|
|
"""_coverage_for returns None for an adapter in coverage_excluded."""
|
|
from meshai.env.store import EnvironmentalStore
|
|
env_cfg = _make_env_cfg()
|
|
store = EnvironmentalStore(
|
|
config=env_cfg,
|
|
coverage_bbox=IDAHO_BOX,
|
|
coverage_excluded=["traffic"],
|
|
)
|
|
result = store._coverage_for("traffic")
|
|
assert result is None
|
|
|
|
|
|
def test_coverage_for_non_excluded_adapter_returns_dict():
|
|
"""_coverage_for returns a dict for adapters NOT in coverage_excluded."""
|
|
from meshai.env.store import EnvironmentalStore
|
|
env_cfg = _make_env_cfg()
|
|
store = EnvironmentalStore(
|
|
config=env_cfg,
|
|
coverage_bbox=IDAHO_BOX,
|
|
coverage_excluded=["traffic"],
|
|
)
|
|
result = store._coverage_for("usgs_quake")
|
|
assert isinstance(result, dict)
|
|
assert "bbox" in result
|
|
assert result["bbox"] == IDAHO_BOX
|
|
|
|
|
|
def test_coverage_for_empty_excluded_list_returns_dict():
|
|
"""With coverage_excluded=[], _coverage_for returns a dict for any adapter that supports coverage."""
|
|
from meshai.env.store import EnvironmentalStore
|
|
env_cfg = _make_env_cfg()
|
|
store = EnvironmentalStore(
|
|
config=env_cfg,
|
|
coverage_bbox=IDAHO_BOX,
|
|
coverage_excluded=[],
|
|
)
|
|
result = store._coverage_for("traffic")
|
|
# traffic adapter IS wired to coverage (returns a dict when bbox is set)
|
|
assert isinstance(result, dict)
|
|
|
|
|
|
def test_coverage_excluded_set_stored_as_set():
|
|
"""_coverage_excluded is stored as a set for O(1) lookup."""
|
|
from meshai.env.store import EnvironmentalStore
|
|
env_cfg = _make_env_cfg()
|
|
store = EnvironmentalStore(
|
|
config=env_cfg,
|
|
coverage_bbox=IDAHO_BOX,
|
|
coverage_excluded=["traffic", "satpass"],
|
|
)
|
|
assert isinstance(store._coverage_excluded, set)
|
|
assert "traffic" in store._coverage_excluded
|
|
assert "satpass" in store._coverage_excluded
|
|
|
|
|
|
def test_coverage_excluded_none_defaults_to_empty_set():
|
|
"""When coverage_excluded is not passed, _coverage_excluded is an empty set."""
|
|
from meshai.env.store import EnvironmentalStore
|
|
env_cfg = _make_env_cfg()
|
|
store = EnvironmentalStore(config=env_cfg, coverage_bbox=IDAHO_BOX)
|
|
assert store._coverage_excluded == set()
|