import datetime import time import pytest from vigilar.highlights.reel import score_event, select_top_events from vigilar.constants import EventType from vigilar.storage.queries import insert_event from vigilar.config import HighlightsConfig def test_score_pet_escape(): assert score_event(EventType.PET_ESCAPE, {}) == 10 def test_score_wildlife_predator(): assert score_event(EventType.WILDLIFE_PREDATOR, {}) == 9 def test_score_person_detected(): assert score_event(EventType.PERSON_DETECTED, {}) == 4 def test_score_unknown_returns_zero(): assert score_event(EventType.MOTION_START, {}) == 0 def test_score_pet_high_motion(): assert score_event(EventType.PET_DETECTED, {"motion_confidence": 0.9}) == 6 def test_score_pet_normal(): assert score_event(EventType.PET_DETECTED, {"motion_confidence": 0.3}) == 1 def test_select_top_events(test_db): today = datetime.date.today() insert_event(test_db, EventType.PET_ESCAPE, "ALERT", source_id="cam1", payload={"pet_name": "Angel"}) insert_event(test_db, EventType.PERSON_DETECTED, "WARNING", source_id="cam1") insert_event(test_db, EventType.WILDLIFE_PREDATOR, "CRITICAL", source_id="cam2", payload={"species": "bear"}) insert_event(test_db, EventType.MOTION_START, "WARNING", source_id="cam1") config = HighlightsConfig(max_clips=3) events_list = select_top_events(test_db, today, config) assert len(events_list) <= 3 assert events_list[0]["type"] in (EventType.PET_ESCAPE, EventType.WILDLIFE_PREDATOR)