def test_execute_statement_read_ahead_2(self, mock_cursor, mock_update_hash, mock_executor, mock_session):
        mock_update_hash.return_value = None
        mock_cursor.return_value = mock_cursor
        mock_session.execute_statement.return_value = MOCK_FIRST_PAGE_RESULT
        transaction = Transaction(mock_session, 2, MOCK_ID, mock_executor)
        cursor = transaction.execute_statement(MOCK_STATEMENT)

        mock_session.execute_statement.assert_called_once_with(MOCK_ID, MOCK_STATEMENT, ())
        mock_update_hash.assert_called_once_with(MOCK_STATEMENT, ())
        mock_cursor.assert_called_once_with(MOCK_STATEMENT_RESULT, mock_session, MOCK_ID, 2, mock_executor)
        self.assertEqual(transaction._cursors, [mock_cursor])
        self.assertEqual(cursor, mock_cursor)
    def test_execute_statement_with_native_parameters(self, mock_cursor, mock_update_hash, mock_executor, mock_session):
        mock_update_hash.return_value = None
        mock_cursor.return_value = mock_cursor
        mock_session.execute_statement.return_value = MOCK_FIRST_PAGE_RESULT
        transaction = Transaction(mock_session, MOCK_READ_AHEAD, MOCK_ID, mock_executor)
        cursor = transaction.execute_statement(MOCK_STATEMENT, NATIVE_PARAMETER_1, NATIVE_PARAMETER_2)

        mock_session.execute_statement.assert_called_once_with(MOCK_ID, MOCK_STATEMENT, (ION_PARAMETER_1,
                                                               ION_PARAMETER_1))
        mock_update_hash.assert_called_once_with(MOCK_STATEMENT, (ION_PARAMETER_1, ION_PARAMETER_2))
        mock_cursor.assert_called_once_with(MOCK_STATEMENT_RESULT, mock_session, MOCK_ID)
        self.assertEqual(transaction._cursors, [mock_cursor])
        self.assertEqual(cursor, mock_cursor)
 def test_execute_statement_with_invalid_parameters(self, mock_executor, mock_session):
     transaction = Transaction(mock_session, MOCK_READ_AHEAD, MOCK_ID, mock_executor)
     
     with self.assertRaises(TypeError):
         transaction.execute_statement(MOCK_STATEMENT, INVALID_MOCK_PARAMETER)