Mercurial > piecrust2
view tests/test_data_iterators.py @ 298:b7ab1b503510
data: Fix incorrect next/previous page URLs in pagination data.
Consolidate splitting an URL between its first URL and its sub page number.
Be careful about the index page's URL not losing its slash.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 11 Mar 2015 23:46:42 -0700 |
parents | 4379d8f8f831 |
children | e35407c60e00 |
line wrap: on
line source
import mock from piecrust.data.iterators import PageIterator from piecrust.page import Page, PageConfiguration def test_skip(): it = PageIterator(range(12)) it.skip(5) assert it.total_count == 12 assert len(it) == 7 assert list(it) == list(range(5, 12)) def test_limit(): it = PageIterator(range(12)) it.limit(4) assert it.total_count == 12 assert len(it) == 4 assert list(it) == list(range(4)) def test_slice(): it = PageIterator(range(12)) it.slice(3, 4) assert it.total_count == 12 assert len(it) == 4 assert list(it) == list(range(3, 7)) def test_natural_sort(): it = PageIterator([4, 3, 1, 2, 0]) it.sort() assert it.total_count == 5 assert len(it) == 5 assert list(it) == list(range(5)) def test_natural_sort_reversed(): it = PageIterator([4, 3, 1, 2, 0]) it.sort(reverse=True) assert it.total_count == 5 assert len(it) == 5 assert list(it) == list(reversed(range(5))) class TestItem(object): def __init__(self, value): self.name = str(value) self.foo = value def __eq__(self, other): return other.name == self.name def test_setting_sort(): it = PageIterator([TestItem(v) for v in [4, 3, 1, 2, 0]]) it.sort('foo') assert it.total_count == 5 assert len(it) == 5 assert list(it) == [TestItem(v) for v in range(5)] def test_setting_sort_reversed(): it = PageIterator([TestItem(v) for v in [4, 3, 1, 2, 0]]) it.sort('foo', reverse=True) assert it.total_count == 5 assert len(it) == 5 assert list(it) == [TestItem(v) for v in reversed(range(5))] def test_filter(): page = mock.MagicMock(spec=Page) page.config = PageConfiguration() page.config.set('threes', {'is_foo': 3}) it = PageIterator([TestItem(v) for v in [3, 2, 3, 1, 4, 3]], page) it.filter('threes') assert it.total_count == 3 assert len(it) == 3 assert list(it) == [TestItem(3), TestItem(3), TestItem(3)] def test_magic_filter(): it = PageIterator([TestItem(v) for v in [3, 2, 3, 1, 4, 3]]) it.is_foo(3) assert it.total_count == 3 assert len(it) == 3 assert list(it) == [TestItem(3), TestItem(3), TestItem(3)]