Skip to content

Commit bed1eec

Browse files
committed
redis_cacher tests
1 parent cb2fa1c commit bed1eec

2 files changed

Lines changed: 63 additions & 2 deletions

File tree

redis_sync/src/redis_cacher.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ class RedisCacher:
1111
"""Class to handle interactions with ElastiCache (Redis) for configuration files."""
1212

1313
@staticmethod
14-
def upload(bucket_name: str, file_key: str, file_type) -> None:
14+
def upload(bucket_name: str, file_key: str) -> None:
1515

1616
config_file_content = S3Reader.read(bucket_name, file_key)
1717

1818
# Transform the content based on the file type
19-
trx_data = transform_map(config_file_content, file_type)
19+
trx_data = transform_map(config_file_content, file_key)
2020

2121
# Use the file_key as the Redis key and file content as the value
2222
redis_client.set(file_key, trx_data)
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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

Comments
 (0)