def test_iterator(self): # pylint: disable=unused-variable paging = Paging(16, PagingRequest(1, 3)) i = 0 for page in paging: i += 1 self.assertEqual(i, 6) paging = Paging(1, PagingRequest(1, 1)) i = 0 for page in paging: i += 1 self.assertEqual(i, 1) paging = Paging(19, PagingRequest(2, 5)) i = 1 for page in paging: i += 1 self.assertEqual(i, 4) # expect one (empty) page for no content paging = Paging(0, PagingRequest(1, 1)) i = 0 for page in paging: i += 1 self.assertEqual(i, 1)
def test_has_next_page(self): paging = Paging(16, PagingRequest(1, 3)) self.assertTrue(paging.has_next_page) paging = Paging(16, PagingRequest(5, 3)) self.assertTrue(paging.has_next_page) paging = Paging(16, PagingRequest(6, 3)) self.assertFalse(paging.has_next_page)
def test_is_last_page(self): paging = Paging(3, PagingRequest(2, 1)) self.assertFalse(paging.is_last_page) paging = Paging(3, PagingRequest(3, 1)) self.assertTrue(paging.is_last_page) paging = Paging(0, PagingRequest(1, 1)) self.assertTrue(paging.is_last_page)
def test_constructor(self): # page size must be larger than 0 with self.assertRaises(ValueError): Paging(-1, PagingRequest(1, 1)) # page size must be of type int with self.assertRaises(TypeError): Paging('1', PagingRequest(1, 1)) # page number must be valid with self.assertRaises(PageNotFoundException): Paging(2, PagingRequest(3, 1)) paging = Paging(0, PagingRequest(1, 1)) paging = Paging(10, PagingRequest(1, 1)) self.assertTrue(paging is not None)
def test_next_page(self): paging = Paging(15, PagingRequest(2, 5)) paging = paging.next_page self.assertEqual(paging.content_size, 15) self.assertEqual(paging.page_number, 3) self.assertEqual(paging.page_size, 5) paging = Paging(3, PagingRequest(3, 1)) with self.assertRaises(PageNotFoundException) as raise_context: next_page = paging.next_page del(next_page) self.assertEqual( str(raise_context.exception), 'A next page does not exist.')
def test_call(self): config = testing.setUp() config.add_route('some_route', '/') pagination_request_writer = PaginationRequestWriterMock() param_property_naming = PropertyNamingMock('page-number', 'page-size', 'sort-property', 'sort-direction') url_creator_factory = UrlCreatorFactoryMock('http://example.com') request = DummyRequest() request.registry.pagination = { 'some_route': { 'pagination_request_writer': pagination_request_writer, 'param_property_naming': param_property_naming, 'url_creator_factory': url_creator_factory, } } request.pagination = Pagination(Paging(100, PagingRequest(3, 12)), Sorting('some_property', 'desc')) request.matched_route = RouteMock('some_route') event = BeforeRenderEventMock() event['request'] = request subscriber = PaginationBeforeRenderSubscriber() subscriber(event) self.assertEqual(pagination_request_writer.call_count, 1) pagination = event.rendering_val['pagination'] self.assertEqual('http://example.com', str(pagination.url))
def test_paging(self): paging_request = PagingRequest(3, 10) paging = Paging(50, paging_request) view_pagination = Pagination( paging, None) self.assertEqual(view_pagination.paging, paging)
def test_page(self): paging = Paging(3, PagingRequest(1, 1)) paging = paging.page(2) self.assertEqual(paging.content_size, 3) self.assertEqual(paging.page_number, 2) self.assertEqual(paging.page_size, 1) with self.assertRaises(PageNotFoundException) as raise_context: paging.page(4) self.assertEqual( str(raise_context.exception), 'Page 4 does not exist.') with self.assertRaises(PageNotFoundException) as raise_context: paging.page(0) self.assertEqual( str(raise_context.exception), 'Page 0 does not exist.') with self.assertRaises(PageNotFoundException) as raise_context: paging.page(-1) self.assertEqual( str(raise_context.exception), 'Page -1 does not exist.')
def test_page_count(self): paging = Paging(15, PagingRequest(1, 5)) self.assertTrue(paging.page_count, 5)
def test_content_size(self): paging = Paging(10, PagingRequest(2, 5)) self.assertEqual(paging.content_size, 10)
def _create_paging(cls, page_number, page_size, content_size): paging_request = PagingRequest(page_number, page_size) paging = Paging(content_size, paging_request) return paging
def test_has_previous_page(self): paging = Paging(16, PagingRequest(1, 3)) self.assertFalse(paging.has_previous_page) paging = Paging(16, PagingRequest(2, 3)) self.assertTrue(paging.has_previous_page)
def test_has_page(self): paging = Paging(15, PagingRequest(1, 3)) self.assertTrue(paging.has_page(1)) self.assertTrue(paging.has_page(5)) self.assertFalse(paging.has_page(6)) paging = Paging(16, PagingRequest(1, 5)) self.assertTrue(paging.has_page(4)) self.assertFalse(paging.has_page(5)) paging = Paging(0, PagingRequest(1, 5)) self.assertTrue(paging.has_page(1))
def test_last_page(self): paging = Paging(3, PagingRequest(2, 1)) paging = paging.last_page self.assertEqual(paging.content_size, 3) self.assertEqual(paging.page_number, 3) self.assertEqual(paging.page_size, 1)
def get_response_provider(cls, content_size, page_number, page_size): return UrlBuilder( UrlCreatorMock('http://example.com/test/url'), Pagination( Paging(content_size, PagingRequest(page_number, page_size)), Sorting('id', 'desc')))