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)
    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_FIRST_PAGE_RESULT,
                                            mock_session, MOCK_ID, 2,
                                            mock_executor)
        self.assertEqual(transaction._cursors, [mock_cursor])
        self.assertEqual(cursor, mock_cursor)
    def test_execute_statement_with_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,
                                                MOCK_PARAMETER_1,
                                                MOCK_PARAMETER_2)

        mock_session._execute_statement.assert_called_once_with(
            MOCK_ID, MOCK_STATEMENT, (MOCK_PARAMETER_1, MOCK_PARAMETER_2))
        mock_update_hash.assert_called_once_with(
            MOCK_STATEMENT, (MOCK_PARAMETER_1, MOCK_PARAMETER_2))
        mock_cursor.assert_called_once_with(MOCK_FIRST_PAGE_RESULT,
                                            mock_session, MOCK_ID)
        self.assertEqual(transaction._cursors, [mock_cursor])
        self.assertEqual(cursor, mock_cursor)