50 lines
2.0 KiB
Python
50 lines
2.0 KiB
Python
import datetime
|
|
import time
|
|
import pytest
|
|
from vigilar.config import VigilarConfig, CameraConfig
|
|
from vigilar.storage.queries import insert_timelapse_schedule, get_timelapse_schedules, delete_timelapse_schedule
|
|
from vigilar.highlights.timelapse import generate_timelapse
|
|
from vigilar.web.app import create_app
|
|
|
|
def test_insert_schedule(test_db):
|
|
sid = insert_timelapse_schedule(test_db, "front", "Daily", 6, 20, "20:00")
|
|
assert sid > 0
|
|
|
|
def test_get_schedules(test_db):
|
|
insert_timelapse_schedule(test_db, "front", "A", 6, 12, "12:00")
|
|
insert_timelapse_schedule(test_db, "front", "B", 12, 20, "20:00")
|
|
assert len(get_timelapse_schedules(test_db, "front")) == 2
|
|
|
|
def test_delete_schedule(test_db):
|
|
sid = insert_timelapse_schedule(test_db, "front", "Test", 6, 20, "20:00")
|
|
delete_timelapse_schedule(test_db, sid)
|
|
assert len(get_timelapse_schedules(test_db, "front")) == 0
|
|
|
|
def test_generate_timelapse_no_recordings(test_db, tmp_path):
|
|
result = generate_timelapse("front", datetime.date.today(), 6, 20, 30, str(tmp_path), test_db)
|
|
assert result is None
|
|
|
|
@pytest.fixture
|
|
def timelapse_app(test_db):
|
|
cfg = VigilarConfig(cameras=[CameraConfig(id="front", display_name="Front", rtsp_url="rtsp://x")])
|
|
app = create_app(cfg)
|
|
app.config["TESTING"] = True
|
|
app.config["DB_ENGINE"] = test_db
|
|
return app
|
|
|
|
def test_post_timelapse(timelapse_app):
|
|
with timelapse_app.test_client() as c:
|
|
rv = c.post("/cameras/front/timelapse", json={"date": "2026-04-02"})
|
|
assert rv.status_code in (200, 202)
|
|
|
|
def test_get_schedules_route(timelapse_app, test_db):
|
|
insert_timelapse_schedule(test_db, "front", "Test", 6, 20, "20:00")
|
|
with timelapse_app.test_client() as c:
|
|
rv = c.get("/cameras/front/timelapse/schedules")
|
|
assert len(rv.get_json()) == 1
|
|
|
|
def test_create_schedule_route(timelapse_app):
|
|
with timelapse_app.test_client() as c:
|
|
rv = c.post("/cameras/front/timelapse/schedule", json={"name": "Daily", "time": "20:00"})
|
|
assert rv.status_code == 200
|