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
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
|