Add pet and wildlife counts to daily digest
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -23,7 +23,7 @@ def _create_test_engine(db_path: Path):
|
||||
def tmp_data_dir(tmp_path):
|
||||
"""Temporary data directory for tests."""
|
||||
data_dir = tmp_path / "data"
|
||||
data_dir.mkdir()
|
||||
data_dir.mkdir(exist_ok=True)
|
||||
return data_dir
|
||||
|
||||
|
||||
|
||||
@@ -5,8 +5,10 @@ import tempfile
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from vigilar.health.digest import build_digest, format_digest
|
||||
from vigilar.health.pruner import find_prunable_recordings, calculate_disk_usage_pct
|
||||
from vigilar.health.monitor import HealthCheck, HealthStatus, check_disk, check_mqtt_port
|
||||
from vigilar.storage.schema import pet_sightings, wildlife_sightings
|
||||
|
||||
|
||||
class TestDiskCheck:
|
||||
@@ -40,6 +42,48 @@ class TestPruner:
|
||||
assert result == []
|
||||
|
||||
|
||||
class TestPetDigest:
|
||||
def test_digest_includes_pet_sightings(self, test_db, tmp_data_dir):
|
||||
import time
|
||||
with test_db.begin() as conn:
|
||||
conn.execute(pet_sightings.insert().values(
|
||||
ts=time.time(), pet_id="p1", species="cat",
|
||||
camera_id="kitchen", confidence=0.9, labeled=1,
|
||||
))
|
||||
conn.execute(pet_sightings.insert().values(
|
||||
ts=time.time(), pet_id="p2", species="dog",
|
||||
camera_id="kitchen", confidence=0.85, labeled=1,
|
||||
))
|
||||
data = build_digest(test_db, str(tmp_data_dir), since_hours=1)
|
||||
assert data["pet_sightings"] == 2
|
||||
|
||||
def test_digest_includes_wildlife(self, test_db, tmp_data_dir):
|
||||
import time
|
||||
with test_db.begin() as conn:
|
||||
conn.execute(wildlife_sightings.insert().values(
|
||||
ts=time.time(), species="bear", threat_level="PREDATOR",
|
||||
camera_id="front", confidence=0.9,
|
||||
))
|
||||
conn.execute(wildlife_sightings.insert().values(
|
||||
ts=time.time(), species="deer", threat_level="PASSIVE",
|
||||
camera_id="back", confidence=0.8,
|
||||
))
|
||||
data = build_digest(test_db, str(tmp_data_dir), since_hours=1)
|
||||
assert data["wildlife_predators"] == 1
|
||||
assert data["wildlife_passive"] == 1
|
||||
|
||||
def test_format_includes_pets(self):
|
||||
data = {
|
||||
"person_detections": 2, "unknown_vehicles": 0,
|
||||
"recordings": 5, "disk_used_gb": 100.0, "disk_used_pct": 50,
|
||||
"since_hours": 12, "pet_sightings": 15,
|
||||
"wildlife_predators": 0, "wildlife_nuisance": 1, "wildlife_passive": 3,
|
||||
}
|
||||
text = format_digest(data)
|
||||
assert "15 pet" in text
|
||||
assert "wildlife" in text.lower() or "nuisance" in text.lower()
|
||||
|
||||
|
||||
class TestMQTTCheck:
|
||||
@patch("vigilar.health.monitor.socket.create_connection")
|
||||
def test_mqtt_reachable(self, mock_conn):
|
||||
|
||||
Reference in New Issue
Block a user