Coverage for mindsdb / integrations / handlers / athena_handler / tests / test_athena_handler.py: 0%
38 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1import unittest
2from unittest.mock import patch, MagicMock, Mock
3from collections import OrderedDict
4from mindsdb.integrations.handlers.athena_handler.athena_handler import AthenaHandler
7class CursorContextManager(Mock):
8 def __enter__(self):
9 return self
11 def __exit__(self, *args):
12 pass
14 description = [['a']]
16 def fetchall(self):
17 return [[1]]
20class AthenaHandlerTest(unittest.TestCase):
21 dummy_connection_data = OrderedDict(
22 aws_access_key_id='aws_access_key_id',
23 aws_secret_access_key='aws_secret_access_key',
24 region_name='us-east-1',
25 database='default',
26 workgroup='my_workgroup',
27 catalog='AwsDataCatalog',
28 results_output_location='s3://bucket-path/athena-query-results',
29 check_interval=0
30 )
32 def setUp(self):
33 self.patcher = patch('boto3.client')
34 self.mock_client = self.patcher.start()
35 self.mock_client.return_value = MagicMock()
36 self.handler = AthenaHandler('athena', connection_data=self.dummy_connection_data)
38 def tearDown(self):
39 self.patcher.stop()
41 def test_connect_success(self):
42 connection = self.handler.connect()
43 self.assertIsNotNone(connection)
44 self.assertTrue(self.handler.is_connected)
46 def test_get_columns(self):
47 self.handler.native_query = MagicMock()
49 table_name = "mock_table"
50 self.handler.get_columns(table_name)
52 expected_query = f"""
53 select
54 column_name as "Field",
55 data_type as "Type"
56 from
57 information_schema.columns
58 where
59 table_name = '{table_name}'
60 """
62 self.handler.native_query.assert_called_once_with(expected_query)
64 def test_get_tables(self):
65 self.handler.native_query = MagicMock()
67 self.handler.get_tables()
69 expected_query = """
70 select
71 table_schema,
72 table_name,
73 table_type
74 from
75 information_schema.tables
76 where
77 table_schema not in ('information_schema')
78 and table_type in ('BASE TABLE', 'VIEW')
79 """
81 self.handler.native_query.assert_called_once_with(expected_query)
84if __name__ == '__main__':
85 unittest.main()