Ejemplo n.º 1
0
    def test_or_condition(self):
        """Test OR conditions."""
        query = datastore_query._KeyQuery(TestDatastoreModel)
        query.filter('IN', 'tokens', ['a', 'b', 'c'])
        query.filter('IN', 'boolean_value', [True, False])
        query.order('datetime_value', True)

        queries = query.flatten()
        for q in queries:
            self.assertListEqual([], q.or_filters)
            self.assertEqual('datetime_value', q.order_property)
            self.assertTrue(q.order_desc)

        def _make(token, boolean):
            return [('=', 'tokens', token), ('=', 'boolean_value', boolean)]

        self.assertEqual(6, len(queries))
        self.assertListEqual(_make('a', True), queries[0].filters)
        self.assertListEqual(_make('b', True), queries[1].filters)
        self.assertListEqual(_make('c', True), queries[2].filters)
        self.assertListEqual(_make('a', False), queries[3].filters)
        self.assertListEqual(_make('b', False), queries[4].filters)
        self.assertListEqual(_make('c', False), queries[5].filters)

        items, count, has_more = query.fetch(offset=8, limit=2, more_limit=40)
        self.assertListEqual([self.mocks[8].key.id(), self.mocks[9].key.id()],
                             [item.key.id() for item in items])
        self.assertEqual(30, count)
        self.assertFalse(has_more)
Ejemplo n.º 2
0
    def test_empty(self):
        """Test when there's no record."""
        query = datastore_query._KeyQuery(TestDatastoreModel)
        query.filter('=', 'tokens', 'c')
        query.order('datetime_value', True)

        items, count, has_more = query.fetch(offset=0, limit=10, more_limit=20)
        self.assertListEqual([], items)
        self.assertEqual(0, count)
        self.assertFalse(has_more)
Ejemplo n.º 3
0
    def test_get_more(self):
        """Test multiple OR conditions and get more items for total count."""
        query = datastore_query._KeyQuery(TestDatastoreModel)
        query.filter('IN', 'tokens', ['a', 'b'])
        query.order('datetime_value', True)

        items, count, has_more = query.fetch(offset=8, limit=2, more_limit=15)
        self.assertListEqual([self.mocks[8].key.id(), self.mocks[9].key.id()],
                             [item.key.id() for item in items])
        self.assertEqual(25, count)
        self.assertTrue(has_more)
Ejemplo n.º 4
0
  def test_no_or_condition(self):
    """Test no OR condition."""
    query = datastore_query._KeyQuery(TestDatastoreModel)
    query.filter('=', 'tokens', 'a')
    query.order('datetime_value', True)

    items, count, has_more = query.fetch(offset=8, limit=2, more_limit=10)
    self.assertListEqual([self.mocks[16].key.id(), self.mocks[18].key.id()],
                         [item.key.id() for item in items])
    self.assertEqual(15, count)
    self.assertFalse(has_more)