Files
TwitchDropsMiner/tests/test_proxy_settings.py
Fengqing Liu 275ce682b8 feat: Add proxy support with verification and benefit type filters (#13)
* 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>
2025-12-11 00:36:13 +11:00

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()