Initial commit - Phase 3/4
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
109
tests/conftest.py
Normal file
109
tests/conftest.py
Normal file
@@ -0,0 +1,109 @@
|
||||
"""Pytest configuration and shared fixtures."""
|
||||
import pytest
|
||||
import asyncio
|
||||
from typing import Generator
|
||||
from unittest.mock import AsyncMock, Mock
|
||||
|
||||
# Fixtures available to all tests
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def event_loop():
|
||||
"""Create an event loop for the test session."""
|
||||
loop = asyncio.get_event_loop_policy().new_event_loop()
|
||||
yield loop
|
||||
loop.close()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_pm3_worker():
|
||||
"""Create a mock PM3Worker."""
|
||||
worker = Mock()
|
||||
worker.is_connected = AsyncMock(return_value=True)
|
||||
worker.execute_command = AsyncMock()
|
||||
worker.connect = AsyncMock()
|
||||
worker.disconnect = AsyncMock()
|
||||
worker.device_path = "/dev/ttyACM0"
|
||||
return worker
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_session_manager():
|
||||
"""Create a mock SessionManager."""
|
||||
manager = Mock()
|
||||
manager.can_execute = Mock(return_value=True)
|
||||
manager.update_activity = Mock()
|
||||
manager.has_active_session = Mock(return_value=False)
|
||||
manager.create_session = Mock(return_value="test-session-id")
|
||||
manager.release_session = Mock()
|
||||
manager.get_session = Mock(return_value=None)
|
||||
manager.get_active_session = Mock(return_value=None)
|
||||
return manager
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_wifi_manager():
|
||||
"""Create a mock WiFiManager."""
|
||||
from app.backend.managers.wifi_manager import WiFiMode, WiFiStatus, WiFiInterface
|
||||
|
||||
manager = Mock()
|
||||
manager.get_status = AsyncMock(return_value=WiFiStatus(
|
||||
mode=WiFiMode.AP,
|
||||
interfaces=[],
|
||||
current_ssid=None,
|
||||
current_ip=None,
|
||||
ap_ssid="raspi-webgui",
|
||||
ap_ip="10.3.141.1",
|
||||
supports_dual=False
|
||||
))
|
||||
manager.scan_networks = AsyncMock(return_value=[])
|
||||
manager.connect_to_network = AsyncMock(return_value=True)
|
||||
manager.disconnect_from_network = AsyncMock(return_value=True)
|
||||
manager.set_mode = AsyncMock(return_value=True)
|
||||
manager.get_saved_networks = AsyncMock(return_value=[])
|
||||
manager.forget_network = AsyncMock(return_value=True)
|
||||
return manager
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_update_manager():
|
||||
"""Create a mock UpdateManager."""
|
||||
from app.backend.managers.update_manager import UpdateProgress, UpdateStatus
|
||||
|
||||
manager = Mock()
|
||||
manager.check_for_updates = AsyncMock(return_value={
|
||||
"update_available": False,
|
||||
"current_version": "1.0.0",
|
||||
"message": "System is up to date"
|
||||
})
|
||||
manager.download_update = AsyncMock(return_value=True)
|
||||
manager.install_update = AsyncMock(return_value=True)
|
||||
manager.get_progress = AsyncMock(return_value=UpdateProgress(
|
||||
status=UpdateStatus.IDLE,
|
||||
current_version="1.0.0"
|
||||
))
|
||||
manager.get_release_notes = AsyncMock(return_value="Release notes")
|
||||
return manager
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_pm3_service():
|
||||
"""Create a mock PM3Service for integration tests."""
|
||||
service = Mock()
|
||||
service.execute_command = AsyncMock()
|
||||
service.get_status = AsyncMock()
|
||||
service.connect = AsyncMock()
|
||||
service.disconnect = AsyncMock()
|
||||
service.create_session = Mock()
|
||||
service.release_session = Mock()
|
||||
service.get_session_info = Mock()
|
||||
return service
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_client():
|
||||
"""Create a FastAPI TestClient for integration tests."""
|
||||
from fastapi.testclient import TestClient
|
||||
from app.backend.main import app
|
||||
|
||||
return TestClient(app)
|
||||
Reference in New Issue
Block a user