def test_bind_tableref_starts_new_context(self, mock_ctx): with patch.object(StatementBinder, 'bind'): binder = StatementBinder(StatementBinderContext()) tableref = MagicMock() tableref.is_table_atom.return_value = False tableref.is_join.return_value = False tableref.is_select.return_value = True binder._bind_tableref(tableref) self.assertEqual(mock_ctx.call_count, 1)
def test_bind_tableref_with_func_expr(self): with patch.object(StatementBinder, 'bind') as mock_binder: binder = StatementBinder(StatementBinderContext()) tableref = MagicMock() tableref.is_table_atom.return_value = False tableref.is_select.return_value = False tableref.is_join.return_value = False binder._bind_tableref(tableref) mock_binder.assert_called_with(tableref.func_expr)
def test_bind_tableref_should_raise(self): with patch.object(StatementBinder, 'bind'): with self.assertRaises(ValueError): binder = StatementBinder(StatementBinderContext()) tableref = MagicMock() tableref.is_select.return_value = False tableref.is_func_expr.return_value = False tableref.is_join.return_value = False tableref.is_table_atom.return_value = False binder._bind_tableref(tableref)
def test_bind_tableref_with_join(self): with patch.object(StatementBinder, 'bind') as mock_binder: binder = StatementBinder(StatementBinderContext()) tableref = MagicMock() tableref.is_table_atom.return_value = False tableref.is_select.return_value = False tableref.is_join.return_value = True binder._bind_tableref(tableref) mock_binder.assert_any_call(tableref.join_node.left) mock_binder.assert_any_call(tableref.join_node.right)
def test_bind_tableref(self, mock_bind_tabe_info): with patch.object(StatementBinderContext, 'add_table_alias') as mock: binder = StatementBinder(StatementBinderContext()) tableref = MagicMock() tableref.is_table_atom.return_value = True binder._bind_tableref(tableref) mock.assert_called_with(tableref.alias, tableref.table.table_name) mock_bind_tabe_info.assert_called_once_with(tableref.table) with patch.object(StatementBinder, 'bind') as mock_binder: with patch.object(StatementBinderContext, 'add_derived_table_alias') as mock_context: binder = StatementBinder(StatementBinderContext()) tableref = MagicMock() tableref.is_table_atom.return_value = False tableref.is_select.return_value = True binder._bind_tableref(tableref) mock_context.assert_called_with( tableref.alias, tableref.select_statement.target_list) mock_binder.assert_called_with(tableref.select_statement)