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