You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8 KiB
Python

import pytest
from app import app, db, VideoLog, MotionEvent, LeftItemEvent
@pytest.fixture
def client():
app.config['TESTING'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
with app.test_client() as client:
with app.app_context():
db.create_all()
yield client
with app.app_context():
db.drop_all()
def test_start_stream(client):
response = client.post('/video/start_stream/camera1', json={'rtsp_url': 'rtsp://example.com/stream'})
assert response.status_code == 200
assert b'stream started' in response.data
def test_stop_stream(client):
client.post('/video/start_stream/camera1', json={'rtsp_url': 'rtsp://example.com/stream'})
response = client.post('/video/stop_stream/camera1')
assert response.status_code == 200
assert b'stream stopped' in response.data
def test_video_logs(client):
log = VideoLog(camera_id='camera1', event_type='motion', video_path='path/to/video.mp4')
db.session.add(log)
db.session.commit()
response = client.get('/video/video_logs')
assert response.status_code == 200
assert b'camera1' in response.data
def test_motion_events(client):
event = MotionEvent(camera_id='camera1', description='Motion detected', video_path='path/to/video.mp4')
db.session.add(event)
db.session.commit()
response = client.get('/video/motion_events')
assert response.status_code == 200
assert b'camera1' in response.data
def test_left_item_events(client):
event = LeftItemEvent(camera_id='camera1', item_description='Item left', video_path='path/to/video.mp4')
db.session.add(event)
db.session.commit()
response = client.get('/video/left_item_events')
assert response.status_code == 200
assert b'camera1' in response.data