37 lines
1.5 KiB
Python
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)
|