Skip to content

Commit ba1a678

Browse files
committed
test error fix
1 parent 468d0fc commit ba1a678

File tree

3 files changed

+59
-56
lines changed

3 files changed

+59
-56
lines changed

lambdas/shared/src/common/aws_dynamodb.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ def get_delta_table(table_name):
99
logger.info("Initializing table: %s", table_name)
1010
delta_table = dynamodb_client.Table(table_name)
1111
except Exception as e:
12-
logger.exception("Error initializing Delta Table")
12+
logger.exception("Error initializing DynamoDB table: %s", table_name)
1313
raise e
1414
return delta_table
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import unittest
2+
from unittest.mock import patch, MagicMock
3+
from common.aws_dynamodb import get_delta_table
4+
5+
6+
class TestGetDeltaTable(unittest.TestCase):
7+
8+
AWS_REGION = "eu-west-2" # Add this missing constant
9+
10+
def setUp(self):
11+
# Mock the specific logger instance used in the module
12+
self.logger_info_patcher = patch("logging.Logger.info")
13+
self.mock_logger_info = self.logger_info_patcher.start()
14+
15+
self.logger_exception_patcher = patch("logging.Logger.exception")
16+
self.mock_logger_exception = self.logger_exception_patcher.start()
17+
18+
self.getenv_patch = patch("os.getenv")
19+
self.mock_getenv = self.getenv_patch.start()
20+
self.mock_getenv.side_effect = lambda key, default=None: {
21+
"AWS_REGION": self.AWS_REGION
22+
}.get(key, default)
23+
24+
self.dynamodb_client_patcher = patch('common.aws_dynamodb.dynamodb_client')
25+
self.mock_dynamodb_client = self.dynamodb_client_patcher.start()
26+
27+
def tearDown(self):
28+
patch.stopall()
29+
30+
def test_get_delta_table_success(self):
31+
# Create a mock table object
32+
table_name = "abc"
33+
mock_table = MagicMock()
34+
self.mock_dynamodb_client.Table.return_value = mock_table
35+
36+
# Call the function
37+
table = get_delta_table(table_name)
38+
39+
self.mock_dynamodb_client.Table.assert_called_once_with(table_name)
40+
self.assertEqual(table, mock_table)
41+
# Verify the success logging
42+
self.mock_logger_info.assert_called_once_with("Initializing table: %s", table_name)
43+
44+
def test_get_delta_table_failure(self):
45+
# Simulate exception when accessing Table
46+
msg = "DynamoDB failure"
47+
self.mock_dynamodb_client.Table.side_effect = Exception(msg)
48+
table_name = "abc"
49+
50+
with self.assertRaises(Exception) as context:
51+
get_delta_table(table_name)
52+
53+
self.assertEqual(str(context.exception), msg)
54+
# This should now work - mocking the instance method
55+
self.mock_logger_exception.assert_called_once_with("Error initializing DynamoDB table: %s", table_name)
56+
# Also verify info logging happened before the exception
57+
self.mock_logger_info.assert_called_once_with("Initializing table: %s", table_name)
Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import unittest
2-
from unittest.mock import patch, MagicMock
2+
from unittest.mock import patch
33
import common.clients as clients
4-
from common.clients import get_delta_table
54
import importlib
65

76

@@ -62,56 +61,3 @@ def test_logging_initialization(self):
6261
self.mock_logging.assert_called_once_with()
6362
self.assertTrue(hasattr(clients, 'logger'))
6463
clients.logger.setLevel.assert_any_call("INFO")
65-
66-
67-
class TestGetDeltaTable(unittest.TestCase):
68-
69-
AWS_REGION = "eu-west-2" # Add this missing constant
70-
71-
def setUp(self):
72-
self.boto3_client_patch = patch("boto3.client")
73-
self.mock_boto3_client = self.boto3_client_patch.start()
74-
75-
# Mock the specific logger instance used in the module
76-
self.logger_patch = patch("common.clients.logger")
77-
self.mock_logger = self.logger_patch.start()
78-
79-
self.getenv_patch = patch("os.getenv")
80-
self.mock_getenv = self.getenv_patch.start()
81-
self.mock_getenv.side_effect = lambda key, default=None: {
82-
"AWS_REGION": self.AWS_REGION
83-
}.get(key, default)
84-
85-
self.mock_dynamodb_client = patch("common.clients.dynamodb_client").start()
86-
87-
def tearDown(self):
88-
patch.stopall()
89-
90-
def test_get_delta_table_success(self):
91-
# Create a mock table object
92-
table_name = "abc"
93-
mock_table = MagicMock()
94-
self.mock_dynamodb_client.Table.return_value = mock_table
95-
96-
# Call the function
97-
table = get_delta_table(table_name)
98-
99-
self.mock_dynamodb_client.Table.assert_called_once_with(table_name)
100-
self.assertEqual(table, mock_table)
101-
# Verify the success logging
102-
self.mock_logger.info.assert_called_once_with("Initializing table: %s", table_name)
103-
104-
def test_get_delta_table_failure(self):
105-
# Simulate exception when accessing Table
106-
msg = "DynamoDB failure"
107-
self.mock_dynamodb_client.Table.side_effect = Exception(msg)
108-
table_name = "abc"
109-
110-
with self.assertRaises(Exception) as context:
111-
get_delta_table(table_name)
112-
113-
self.assertEqual(str(context.exception), msg)
114-
# This should now work - mocking the instance method
115-
self.mock_logger.exception.assert_called_once_with("Error initializing Delta Table")
116-
# Also verify info logging happened before the exception
117-
self.mock_logger.info.assert_called_once_with("Initializing table: %s", table_name)

0 commit comments

Comments
 (0)