34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
from types import SimpleNamespace
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from libs.signal import SignalResult, fetch_signal, init_signals
|
|
|
|
|
|
class SignalTests(unittest.TestCase):
|
|
def test_fetch_failure_returns_empty_result(self):
|
|
with patch("libs.signal.get_json", side_effect=OSError("offline")):
|
|
self.assertEqual(fetch_signal("http://example", "/signals"), SignalResult())
|
|
|
|
def test_init_signals_continues_after_fetch_failure(self):
|
|
config = SimpleNamespace(
|
|
api_host="http://example",
|
|
signals={
|
|
"failed": SimpleNamespace(url="/failed"),
|
|
"working": SimpleNamespace(url="/working"),
|
|
},
|
|
)
|
|
responses = [
|
|
SignalResult(),
|
|
SignalResult(data={"000001.SZ": SimpleNamespace(signal_key="")}),
|
|
]
|
|
with patch("libs.signal.fetch_signal", side_effect=responses):
|
|
result = init_signals(config, ["failed", "working"])
|
|
|
|
self.assertEqual(len(result), 1)
|
|
self.assertEqual(result[0].signal_key, "working")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|