Add get_wildlife_sightings_paginated, get_wildlife_stats, and get_wildlife_frequency to queries.py with full test coverage. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
import time
|
|
import pytest
|
|
from vigilar.storage.queries import (
|
|
get_wildlife_stats, get_wildlife_frequency, get_wildlife_sightings_paginated,
|
|
insert_wildlife_sighting,
|
|
)
|
|
|
|
@pytest.fixture
|
|
def seeded_wildlife(test_db):
|
|
for i in range(5):
|
|
insert_wildlife_sighting(test_db, species="deer", threat_level="PASSIVE",
|
|
camera_id="front", confidence=0.9, event_id=i + 1)
|
|
for i in range(3):
|
|
insert_wildlife_sighting(test_db, species="raccoon", threat_level="NUISANCE",
|
|
camera_id="back", confidence=0.8, event_id=i + 10)
|
|
insert_wildlife_sighting(test_db, species="bear", threat_level="PREDATOR",
|
|
camera_id="front", confidence=0.95, event_id=20)
|
|
return test_db
|
|
|
|
def test_get_wildlife_stats(seeded_wildlife):
|
|
stats = get_wildlife_stats(seeded_wildlife)
|
|
assert stats["total"] == 9
|
|
assert stats["per_species"]["deer"] == 5
|
|
|
|
def test_get_wildlife_frequency(seeded_wildlife):
|
|
freq = get_wildlife_frequency(seeded_wildlife)
|
|
assert len(freq) == 6
|
|
|
|
def test_get_wildlife_sightings_paginated(seeded_wildlife):
|
|
page1 = get_wildlife_sightings_paginated(seeded_wildlife, limit=5, offset=0)
|
|
assert len(page1) == 5
|
|
page2 = get_wildlife_sightings_paginated(seeded_wildlife, limit=5, offset=5)
|
|
assert len(page2) == 4
|
|
|
|
def test_get_wildlife_sightings_filter_species(seeded_wildlife):
|
|
result = get_wildlife_sightings_paginated(seeded_wildlife, species="bear", limit=50, offset=0)
|
|
assert len(result) == 1
|
|
assert result[0]["species"] == "bear"
|