def test_page(self): """ You can paginate a Crud """ engine = yield self.engine() crud = Crud(engine, Policy(pets)) pager = Paginator(crud, page_size=10, order=pets.c.id) monkeys = [] for i in xrange(40): monkey = yield crud.create({'name': 'seamonkey %d' % (i,)}) monkeys.append(monkey) page1 = yield pager.page(0) self.assertEqual(page1, monkeys[:10]) page2 = yield pager.page(1) self.assertEqual(page2, monkeys[10:20])
def test_page_where(self): """ You can paginate filtered results, too """ engine = yield self.engine() crud = Crud(engine, Policy(pets)) pager = Paginator(crud, page_size=3, order=pets.c.id) things = [] _things = [ {'name': 'thing 1'}, {'name': 'thing 2'}, {'name': 'dog'}, {'name': 'cat'}, {'name': 'dog'}, ] for thing in _things: t = yield crud.create(thing) things.append(t) page1 = yield pager.page(0, pets.c.name.startswith('thing')) self.assertEqual(page1, [things[0], things[1]]) count = yield pager.pageCount(pets.c.name.startswith('thing')) self.assertEqual(count, 1)