mirror of
https://github.com/rangermix/TwitchDropsMiner.git
synced 2026-05-26 07:08:04 +00:00
* feat: Add proxy configuration and verification functionality with dedicated API and UI.
* no header needed
* batch render
* feat: Add inventory filters for drop benefit types and refine proxy settings UI.
* debug message
* benefit type filter fix
* avoid duplicated update
* claude md update
* sync change from 5d7a697c2b
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
|
|
import unittest
|
|
import asyncio
|
|
from unittest.mock import MagicMock
|
|
from yarl import URL
|
|
|
|
# Mock the imports that depend on application structure if needed,
|
|
# or just import them if PYTHONPATH is set correctly.
|
|
# Assuming run from root, imports should work.
|
|
from src.config.settings import Settings
|
|
from src.web.managers.settings import SettingsManager
|
|
from src.web.managers.console import ConsoleOutputManager
|
|
|
|
class TestProxySettings(unittest.TestCase):
|
|
def setUp(self):
|
|
self.mock_broadcaster = MagicMock()
|
|
# Mock emit to be awaitable
|
|
f = asyncio.Future()
|
|
f.set_result(None)
|
|
self.mock_broadcaster.emit = MagicMock(return_value=f)
|
|
|
|
self.mock_settings = MagicMock(spec=Settings)
|
|
# Setup properties
|
|
self.mock_settings.proxy = URL()
|
|
self.mock_settings.language = "en"
|
|
self.mock_settings.dark_mode = False
|
|
self.mock_settings.games_to_watch = []
|
|
self.mock_settings.connection_quality = 1
|
|
self.mock_settings.minimum_refresh_interval_minutes = 30
|
|
|
|
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, URL(proxy_url))
|
|
self.mock_console.print.assert_called_with(f"Proxy set to: {proxy_url}")
|
|
|
|
# Test clearing a proxy
|
|
manager.update_settings({"proxy": ""})
|
|
self.assertEqual(self.mock_settings.proxy, URL())
|
|
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.alter.assert_called()
|
|
self.mock_settings.save.assert_called()
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|