Spaces:
Runtime error
Runtime error
File size: 1,568 Bytes
0cac9cf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | """Tests that identifier rewriting handles multi-table JOIN reads.
Author: mohamedgamal04
"""
import unittest
from queryquest.sql.rewrite import (
_normalize_single_quoted_table_identifiers,
_rewrite_to_normalized_identifiers,
)
class RewriteJoinTests(unittest.TestCase):
def test_rewrites_both_join_tables_via_alias_map(self) -> None:
table_alias_map = {"orders": "orders__data", "customers": "customers__data"}
statement = "SELECT * FROM orders o JOIN customers c ON o.id = c.order_id"
result = _rewrite_to_normalized_identifiers(statement, {}, table_alias_map, {}, {})
self.assertIn("FROM orders__data o", result)
self.assertIn("JOIN customers__data c", result)
def test_rewrites_table_name_map_for_join(self) -> None:
table_name_map = {"Order List": "order_list__data", "Customer List": "customer_list__data"}
statement = 'SELECT * FROM "Order List" JOIN "Customer List" ON 1 = 1'
result = _rewrite_to_normalized_identifiers(statement, table_name_map, {}, {}, {})
self.assertIn("FROM order_list__data", result)
self.assertIn("JOIN customer_list__data", result)
def test_single_quoted_table_after_join_is_double_quoted(self) -> None:
statement = "SELECT * FROM orders JOIN 'Customer List' ON 1 = 1"
result = _normalize_single_quoted_table_identifiers(statement, {"Customer List"})
self.assertIn('JOIN "Customer List"', result)
self.assertNotIn("'Customer List'", result)
if __name__ == "__main__":
unittest.main()
|