Ejemplo n.º 1
0
    def testPagination(self):
        fd=orders.get_full_order_fetchdef()
        filter=orders.Customer.account_id>=-1 # This selects all records - in future allow None filter to do this.
        
        # Page 1
        results1, curs1, more1=fetch_page(fd, 6, filter=filter, order=orders.Customer.account_id)
        self.assertEqual(len(results1), 6)
        customer=results1[0]
        curs1_str=curs1.urlsafe()
        self.assertTrue(isinstance(customer.orders, types.ListType), "Customer.orders should be a list")
        
        # Page 2
        new_curs1 = ndb.Cursor(urlsafe=curs1_str)
        results2, curs2, more2=fetch_page(fd, 6, filter=filter, start_cursor=new_curs1, order=orders.Customer.account_id)
        self.assertEqual(len(results2), 4)
        self.assertFalse(more2)
        
        # Page 3 should be the same as page 1, except with the results in the opposite order.
        prev_cursor=new_curs1.reversed()
        results3, curs3, more3=fetch_page(fd, 6, filter=filter, start_cursor=prev_cursor, order=-orders.Customer.account_id)
        results3.reverse()

        self.assertEqual(results3[0].key.id(), results1[0].key.id())

        # Page 4 is the page after Page 2 (should have no results)
        results4, curs4, more4=fetch_page(fd, 6, filter=filter, start_cursor=curs2, order=orders.Customer.account_id)
Ejemplo n.º 2
0
    def testQueryNoResults(self):
        fd = FetchDefinition(Foo)
        results = fetch(fd, filter=Foo.name=='NOTHING MATCHES THIS')
        self.assertTrue(len(results)==0, "non empty results returned")

        results2, curs, more = fetch_page(fd, 10, filter=Foo.name=='NOTHING MATCHES THIS')
        self.assertTrue(len(results2)==0, "non empty results returned")