vigilar/tests/unit/test_reel.py
Aaron D. Lee 622af22642 feat(Q1): highlight reel event scoring and FFmpeg clip assembly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 19:07:12 -04:00

37 lines
1.5 KiB
Python

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)