mirror of
https://github.com/rangermix/TwitchDropsMiner.git
synced 2026-05-26 07:08:04 +00:00
- unify game selection and expectation logic - refactore settings and settings manager - formatting and coverage and precommit hook
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
import unittest
|
|
from unittest.mock import AsyncMock, MagicMock
|
|
|
|
from src.config.settings import Settings
|
|
from src.web.managers.console import ConsoleOutputManager
|
|
from src.web.managers.settings import SettingsManager
|
|
|
|
|
|
class TestProxySettings(unittest.TestCase):
|
|
def setUp(self):
|
|
self.mock_broadcaster = MagicMock()
|
|
# Use AsyncMock for emit - it returns a coroutine without needing an event loop
|
|
self.mock_broadcaster.emit = AsyncMock()
|
|
|
|
# Create a pure mock Settings without wrapping a real instance
|
|
# This avoids file I/O during tests
|
|
self.mock_settings = MagicMock(spec=Settings)
|
|
self.mock_console = MagicMock(spec=ConsoleOutputManager)
|
|
|
|
# Mock asyncio.create_task
|
|
self.create_task_patcher = unittest.mock.patch("asyncio.create_task")
|
|
self.mock_create_task = self.create_task_patcher.start()
|
|
|
|
def tearDown(self):
|
|
self.create_task_patcher.stop()
|
|
|
|
def test_update_proxy_setting(self):
|
|
manager = SettingsManager(self.mock_broadcaster, self.mock_settings, self.mock_console)
|
|
|
|
# Test setting a proxy
|
|
proxy_url = "http://user:pass@localhost:8080"
|
|
manager.update_settings({"proxy": proxy_url})
|
|
|
|
self.assertEqual(self.mock_settings.proxy, proxy_url)
|
|
self.mock_console.print.assert_called_with(
|
|
"Setting changed: proxy = http://user:pass@localhost:8080"
|
|
)
|
|
|
|
# Test clearing a proxy
|
|
manager.update_settings({"proxy": ""})
|
|
self.assertEqual(self.mock_settings.proxy, "")
|
|
self.mock_console.print.assert_called_with("Proxy cleared")
|
|
|
|
def test_proxy_persistence_trigger(self):
|
|
manager = SettingsManager(self.mock_broadcaster, self.mock_settings, self.mock_console)
|
|
manager.update_settings({"proxy": "http://1.2.3.4:8080"})
|
|
|
|
self.mock_settings.save.assert_called()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|