1+ import unittest
2+ import json
3+ from unittest .mock import patch
4+ from redis_cacher import RedisCacher
5+ from constants import RedisCacheKey
6+
7+
8+ class TestRedisCacher (unittest .TestCase ):
9+
10+ def setUp (self ):
11+ # mock s3_reader and transform_map
12+ self .s3_reader_patcher = patch ("redis_cacher.S3Reader" )
13+ self .mock_s3_reader = self .s3_reader_patcher .start ()
14+ self .transform_map_patcher = patch ("redis_cacher.transform_map" )
15+ self .mock_transform_map = self .transform_map_patcher .start ()
16+ self .redis_client_patcher = patch ("redis_cacher.redis_client" )
17+ self .mock_redis_client = self .redis_client_patcher .start ()
18+
19+ def tearDown (self ):
20+ self .s3_reader_patcher .stop ()
21+ self .transform_map_patcher .stop ()
22+ self .redis_client_patcher .stop ()
23+
24+ def test_upload (self ):
25+ mock_data = '{"a": "b"}'
26+ mock_transformed_data = '{"b": "c"}'
27+ self .mock_s3_reader .read = unittest .mock .Mock ()
28+ self .mock_s3_reader .read .return_value = mock_data
29+ self .mock_transform_map .return_value = mock_transformed_data
30+
31+ bucket_name = "bucket"
32+ file_key = "file-key"
33+ result = RedisCacher .upload (bucket_name , file_key )
34+
35+ self .mock_s3_reader .read .assert_called_once_with (bucket_name , file_key )
36+ self .mock_transform_map .assert_called_once_with (mock_data , file_key )
37+ self .mock_redis_client .set .assert_called_once_with (file_key , mock_transformed_data )
38+ self .assertTrue (result )
39+
40+ def test_get_cached_config_json (self ):
41+ """Test getting cached config JSON from Redis."""
42+ cache_key = "some-key"
43+ cached_data = '{"some-data-key": "some-data-value"}'
44+ self .mock_redis_client .get .return_value = cached_data
45+ result = RedisCacher .get_cached_config_json (cache_key )
46+ self .assertEqual (result , json .loads (cached_data ))
47+ self .mock_redis_client .get .assert_called_once_with (cache_key )
48+
49+ def test_get_cached_permissions_config_json (self ):
50+ cached_permissions = '{"permissions": "perm_config"}'
51+ self .mock_redis_client .get .return_value = cached_permissions
52+ result = RedisCacher .get_cached_permissions_config_json ()
53+ self .assertEqual (result , json .loads (cached_permissions ))
54+ self .mock_redis_client .get .assert_called_once_with (RedisCacheKey .PERMISSIONS_CONFIG_FILE_KEY )
55+
56+ def test_get_cached_disease_mapping_json (self ):
57+ cached_disease_mapping = '{"disease": "disease-mapping"}'
58+ self .mock_redis_client .get .return_value = cached_disease_mapping
59+ result = RedisCacher .get_cached_disease_mapping_json ()
60+ self .assertEqual (result , json .loads (cached_disease_mapping ))
61+ self .mock_redis_client .get .assert_called_once_with (RedisCacheKey .DISEASE_MAPPING_FILE_KEY )
0 commit comments