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_get_query_in(): class SomeKind(model.Model): prop1 = model.IntegerProperty() gql = gql_module.GQL("SELECT prop1 FROM SomeKind WHERE prop1 IN (1, 2, 3)") query = gql.get_query() assert query.filters == query_module.OR( query_module.FilterNode("prop1", "=", 1), query_module.FilterNode("prop1", "=", 2), query_module.FilterNode("prop1", "=", 3), )
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
def test_iterate_async_ordered_limit_and_offset(): foo = model.StringProperty("foo") query = query_module.QueryOptions( offset=5, limit=4, 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(["a", "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() == ["f", "g", "h", "i"]
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