- Introduced a new rns.py module to encapsulate Reticulum lifecycle management. - Simplified RNS initialization and error handling in app.py. - Enhanced settings.py to improve configuration management and user feedback. - Updated UI components for better interaction and status display. - Added tests for settings functionality and RNS integration.
93 lines
2.4 KiB
Python
93 lines
2.4 KiB
Python
from unittest.mock import MagicMock, Mock
|
|
|
|
import flet as ft
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_page():
|
|
"""Create a mock Flet page for testing."""
|
|
page = Mock(spec=ft.Page)
|
|
page.add = Mock()
|
|
page.update = Mock()
|
|
page.run_thread = Mock()
|
|
page.controls = []
|
|
page.theme_mode = ft.ThemeMode.DARK
|
|
page.appbar = Mock()
|
|
page.drawer = Mock()
|
|
page.window = Mock()
|
|
page.width = 1024
|
|
page.snack_bar = None
|
|
page.on_resized = None
|
|
page.on_keyboard_event = None
|
|
return page
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_rns():
|
|
"""Mock RNS module to avoid network dependencies in tests."""
|
|
mock_rns = MagicMock()
|
|
mock_rns.Reticulum = Mock()
|
|
mock_rns.Transport = Mock()
|
|
mock_rns.Identity = Mock()
|
|
mock_rns.Destination = Mock()
|
|
mock_rns.Link = Mock()
|
|
mock_rns.log = Mock()
|
|
|
|
# Mock at the module level for all imports
|
|
import sys
|
|
|
|
sys.modules["RNS"] = mock_rns
|
|
|
|
yield mock_rns
|
|
|
|
# Cleanup
|
|
if "RNS" in sys.modules:
|
|
del sys.modules["RNS"]
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_announce_data():
|
|
"""Sample announce data for testing."""
|
|
return {
|
|
"destination_hash": "1234567890abcdef",
|
|
"display_name": "Test Node",
|
|
"timestamp": 1234567890,
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_page_request():
|
|
"""Sample page request for testing."""
|
|
from ren_browser.pages.page_request import PageRequest
|
|
|
|
return PageRequest(
|
|
destination_hash="1234567890abcdef",
|
|
page_path="/page/index.mu",
|
|
field_data=None,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_storage_manager():
|
|
"""Mock storage manager for testing."""
|
|
mock_storage = Mock()
|
|
mock_storage.load_config.return_value = "test config content"
|
|
mock_storage.save_config.return_value = True
|
|
mock_storage.get_config_path.return_value = Mock()
|
|
mock_storage.get_reticulum_config_path.return_value = Mock()
|
|
mock_storage.load_app_settings.return_value = {
|
|
"horizontal_scroll": False,
|
|
"page_bgcolor": "#000000",
|
|
}
|
|
mock_storage.save_app_settings.return_value = True
|
|
mock_storage.get_storage_info.return_value = {
|
|
"storage_dir": "/mock/storage",
|
|
"config_path": "/mock/storage/config.txt",
|
|
"reticulum_config_path": "/mock/storage/reticulum",
|
|
"storage_dir_exists": True,
|
|
"storage_dir_writable": True,
|
|
"has_client_storage": True,
|
|
}
|
|
return mock_storage
|