def test_iterate_async_raw(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that") ) iterator = _datastore_query._MultiQueryIteratorImpl(query, raw=True) iterator._result_sets = [ MockResultSet(["a", "c", "e", "g", "i"]), MockResultSet(["b", "d", "f", "h", "j"]), ] @tasklets.tasklet def iterate(): results = [] while (yield iterator.has_next_async()): results.append(iterator.next()) raise tasklets.Return(results) assert iterate().result() == [ MockResult("a"), MockResult("c"), MockResult("e"), MockResult("g"), MockResult("i"), MockResult("b"), MockResult("d"), MockResult("f"), MockResult("h"), MockResult("j"), ] with pytest.raises(StopIteration): iterator.next()
def test_iterate_async_ordered(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that") ) iterator = _datastore_query._MultiQueryIteratorImpl(query) iterator._sortable = True iterator._result_sets = [ MockResultSet(["a", "c", "e", "g", "i"]), MockResultSet(["b", "d", "f", "h", "j"]), ] @tasklets.tasklet def iterate(): results = [] while (yield iterator.has_next_async()): results.append(iterator.next()) raise tasklets.Return(results) assert iterate().result() == [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", ]
def test_index_list(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that")) iterator = _datastore_query._MultiQueryIteratorImpl(query) with pytest.raises(NotImplementedError): iterator.index_list()
def test_iter(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that") ) iterator = _datastore_query._MultiQueryIteratorImpl(query) assert iter(iterator) is iterator
def test_probably_has_next_doesnt(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that")) iterator = _datastore_query._MultiQueryIteratorImpl(query) iterator._result_sets = [MockResultSet([])] assert not iterator.probably_has_next()
def test_cursor_after(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that")) iterator = _datastore_query._MultiQueryIteratorImpl(query) with pytest.raises(exceptions.BadArgumentError): iterator.cursor_after()
def test_probably_has_next_loaded(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that")) iterator = _datastore_query._MultiQueryIteratorImpl(query) iterator._next = "foo" assert iterator.probably_has_next()
def test_has_next_async_exhausted(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that")) iterator = _datastore_query._MultiQueryIteratorImpl(query) iterator._result_sets = [] assert not iterator.has_next_async().result()
def test_has_next(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that")) iterator = _datastore_query._MultiQueryIteratorImpl(query) iterator.has_next_async = mock.Mock( return_value=utils.future_result("bar")) assert iterator.has_next() == "bar"
def test_constructor_sortable(): foo = model.StringProperty("foo") query = query_module.QueryOptions( filters=query_module.OR(foo == "this", foo == "that"), order_by=["foo"], ) iterator = _datastore_query._MultiQueryIteratorImpl(query) assert iterator._result_sets[0]._query == query_module.QueryOptions( filters=foo == "this", order_by=["foo"]) assert iterator._result_sets[1]._query == query_module.QueryOptions( filters=foo == "that", order_by=["foo"]) assert iterator._sortable
def test_constructor(): foo = model.StringProperty("foo") query = query_module.QueryOptions( offset=20, limit=10, filters=query_module.OR(foo == "this", foo == "that"), ) iterator = _datastore_query._MultiQueryIteratorImpl(query) assert iterator._result_sets[0]._query == query_module.QueryOptions( filters=foo == "this") assert iterator._result_sets[1]._query == query_module.QueryOptions( filters=foo == "that") assert not iterator._sortable assert iterator._offset == 20 assert iterator._limit == 10