def test_next_verify_are_there_more_results_and_next_page_called( self, mock_are_there_more_results, mock_next_page, mock_session, mock_value_holder_to_ion_value, mock_executor): updated_result = '1' def next_page(): read_ahead_cursor._page = { 'NextPageToken': None, 'Values': [updated_result] } read_ahead_cursor._index = 0 mock_are_there_more_results.return_value = True mock_value_holder_to_ion_value.side_effect = lambda val: val mock_session.return_value = None mock_next_page.return_value = None mock_next_page.side_effect = next_page read_ahead_cursor = ReadAheadCursor(MOCK_STATEMENT_RESULT, mock_session, MOCK_TRANSACTION_ID, MOCK_READ_AHEAD, mock_executor) read_ahead_cursor._index = len(MOCK_ION_BINARY_VALUES) self.assertEqual(next(read_ahead_cursor), updated_result) mock_are_there_more_results.assert_called_once_with() mock_next_page.assert_called_once_with() mock_value_holder_to_ion_value.assert_called_once_with(updated_result)
def test_next_with_next_page_returns_empty_values_and_not_none_token( self, mock_session, mock_executor): read_ahead_cursor = ReadAheadCursor(MOCK_STATEMENT_RESULT, mock_session, MOCK_TRANSACTION_ID, MOCK_READ_AHEAD, mock_executor) read_ahead_cursor._queue = Queue() read_ahead_cursor._queue.put({'NextPageToken': 'token', 'Values': []}) read_ahead_cursor._queue.put({'NextPageToken': None, 'Values': []}) read_ahead_cursor._index = len(MOCK_ION_BINARY_VALUES) self.assertRaises(StopIteration, next, read_ahead_cursor)
def test_next_when_next_page_returns_empty_values_and_none_token( self, mock_session, mock_next_page, mock_executor): mock_session.return_value = None def next_page(): read_ahead_cursor._page = {'NextPageToken': None, 'Values': []} read_ahead_cursor._index = 0 read_ahead_cursor = ReadAheadCursor(MOCK_STATEMENT_RESULT, mock_session, MOCK_TRANSACTION_ID, MOCK_READ_AHEAD, mock_executor) read_ahead_cursor._index = len(MOCK_ION_BINARY_VALUES) mock_next_page.side_effect = next_page self.assertRaises(StopIteration, next, read_ahead_cursor)