Spaces:
Sleeping
Sleeping
| import pytest | |
| from unittest.mock import patch, MagicMock | |
| from connectors.mysql_handler import list_mysql_tables, MysqlHandler | |
| def test_list_mysql_tables_uses_inspector(mock_inspect, mock_create_engine): | |
| mock_engine = MagicMock() | |
| mock_create_engine.return_value = mock_engine | |
| mock_inspector = MagicMock() | |
| mock_inspector.get_table_names.return_value = ['users', 'orders'] | |
| mock_inspect.return_value = mock_inspector | |
| # Execute | |
| tables = list_mysql_tables('localhost', '3306', 'mydb', 'user', 'pass') | |
| # Assert | |
| assert tables == ['users', 'orders'] | |
| mock_create_engine.assert_called_once() | |
| mock_inspector.get_table_names.assert_called_once_with(schema='mydb') | |
| def test_get_schema_metadata_uses_inspector(mock_inspect, mock_create_engine): | |
| mock_engine = MagicMock() | |
| mock_create_engine.return_value = mock_engine | |
| mock_inspector = MagicMock() | |
| mock_inspector.get_columns.return_value = [ | |
| {"name": "id", "type": "INTEGER", "comment": None}, | |
| {"name": "email", "type": "VARCHAR", "comment": "user email"} | |
| ] | |
| mock_inspect.return_value = mock_inspector | |
| handler = MysqlHandler() | |
| columns = handler.get_schema_metadata('localhost', '3306', 'mydb', 'user', 'pass', 'users') | |
| assert len(columns) == 2 | |
| assert columns[0] == { | |
| "table_name": "users", | |
| "column_name": "id", | |
| "data_type": "INTEGER", | |
| "column_comment": "" | |
| } | |
| assert columns[1] == { | |
| "table_name": "users", | |
| "column_name": "email", | |
| "data_type": "VARCHAR", | |
| "column_comment": "user email" | |
| } | |
| mock_inspect.assert_called_once_with(mock_engine) | |
| mock_inspector.get_columns.assert_called_once_with("users", schema="mydb") | |
| def test_fetch_data_respects_limit(mock_read_sql, mock_create_engine): | |
| mock_engine = MagicMock() | |
| mock_create_engine.return_value = mock_engine | |
| import pandas as pd | |
| mock_read_sql.return_value = pd.DataFrame([{"id": 1}]) | |
| handler = MysqlHandler() | |
| handler.fetch_data('localhost', '3306', 'mydb', 'user', 'pass', 'users', limit=5) | |
| mock_create_engine.assert_called_once() | |
| mock_read_sql.assert_called_once() | |
| query_passed = mock_read_sql.call_args[0][0] | |
| assert query_passed.endswith("LIMIT 5") | |
| assert "SELECT * FROM `users` LIMIT 5" == query_passed | |