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