Skip to content

Commit d842dad

Browse files
committed
fix(app): Trying fixes in test 3
1 parent 0f5f940 commit d842dad

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

‎tests/test_modules.py‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import unittest.mock as mock
66
import io
77
import json
8+
import importlib
89
import requests
910
import redis
1011
from minio.error import S3Error, InvalidResponseError
@@ -530,5 +531,45 @@ def test_readiness_check_partial_failure(self):
530531
self.assertEqual(result, 200)
531532

532533

534+
class TestOpenSenseExceptionBranches(unittest.TestCase):
535+
"""Covers exception branches in opensense module."""
536+
537+
def test_set_cached_temperature_redis_error_is_swallowed(self):
538+
"""_set_cached_temperature should swallow RedisError (pass)."""
539+
with mock.patch('app.opensense.REDIS_AVAILABLE', True), \
540+
mock.patch('app.opensense.REDIS_CLIENT') as mock_client:
541+
mock_client.setex.side_effect = redis.RedisError("boom")
542+
# Should not raise
543+
opensense._set_cached_temperature("value")
544+
mock_client.setex.assert_called_once()
545+
546+
def test_get_cached_temperature_redis_error_returns_none(self):
547+
"""_get_cached_temperature should return None on RedisError."""
548+
with mock.patch('app.opensense.REDIS_AVAILABLE', True), \
549+
mock.patch('app.opensense.REDIS_CLIENT') as mock_client:
550+
mock_client.get.side_effect = redis.RedisError("boom")
551+
result = opensense._get_cached_temperature()
552+
self.assertIsNone(result)
553+
mock_client.get.assert_called_once_with("temperature_data")
554+
555+
def test_module_level_redis_init_errors_are_caught_all_types(self):
556+
"""create_redis_client exceptions at import-time are handled (all types)."""
557+
for exc in (
558+
redis.ConnectionError("c"),
559+
redis.TimeoutError("t"),
560+
OSError("o"),
561+
ImportError("i")):
562+
with self.subTest(exc=type(exc).__name__), \
563+
mock.patch('app.config.create_redis_client', side_effect=exc), \
564+
mock.patch('builtins.print'):
565+
reloaded = importlib.reload(opensense)
566+
self.assertIsNone(reloaded.REDIS_CLIENT)
567+
self.assertFalse(reloaded.REDIS_AVAILABLE)
568+
# Restore module for other tests
569+
with mock.patch('app.config.create_redis_client', return_value=(None, False)), \
570+
mock.patch('builtins.print'):
571+
importlib.reload(opensense)
572+
573+
533574
if __name__ == '__main__':
534575
unittest.main()

0 commit comments

Comments
 (0)