Пример #1
0
 def test_ending_offset(self):
     request = Request(factory.get('/', {'limit': 5, 'offset': 95}))
     queryset = self.paginate_queryset(request)
     content = self.get_paginated_content(queryset)
     context = self.get_html_context()
     assert queryset == [96, 97, 98, 99, 100]
     assert content == {
         'results': [96, 97, 98, 99, 100],
         'previous': 'http://testserver/?limit=5&offset=90',
         'next': None,
         'count': 100
     }
     assert context == {
         'previous_url':
         'http://testserver/?limit=5&offset=90',
         'next_url':
         None,
         'page_links': [
             PageLink('http://testserver/?limit=5', 1, False, False),
             PAGE_BREAK,
             PageLink('http://testserver/?limit=5&offset=85', 18, False,
                      False),
             PageLink('http://testserver/?limit=5&offset=90', 19, False,
                      False),
             PageLink('http://testserver/?limit=5&offset=95', 20, True,
                      False),
         ]
     }
Пример #2
0
 def test_single_offset(self):
     """
     When the offset is not a multiple of the limit we get some edge cases:
     * The first page should still be offset zero.
     * We may end up displaying an extra page in the pagination control.
     """
     request = Request(factory.get('/', {'limit': 5, 'offset': 1}))
     queryset = self.paginate_queryset(request)
     content = self.get_paginated_content(queryset)
     context = self.get_html_context()
     assert queryset == [2, 3, 4, 5, 6]
     assert content == {
         'results': [2, 3, 4, 5, 6],
         'previous': 'http://testserver/?limit=5',
         'next': 'http://testserver/?limit=5&offset=6',
         'count': 100
     }
     assert context == {
         'previous_url':
         'http://testserver/?limit=5',
         'next_url':
         'http://testserver/?limit=5&offset=6',
         'page_links': [
             PageLink('http://testserver/?limit=5', 1, False, False),
             PageLink('http://testserver/?limit=5&offset=1', 2, True,
                      False),
             PageLink('http://testserver/?limit=5&offset=6', 3, False,
                      False),
             PAGE_BREAK,
             PageLink('http://testserver/?limit=5&offset=96', 21, False,
                      False),
         ]
     }
Пример #3
0
 def test_middle_offset(self):
     request = Request(factory.get('/', {'limit': 5, 'offset': 10}))
     queryset = self.paginate_queryset(request)
     content = self.get_paginated_content(queryset)
     context = self.get_html_context()
     assert queryset == [11, 12, 13, 14, 15]
     assert content == {
         'results': [11, 12, 13, 14, 15],
         'previous': 'http://testserver/?limit=5&offset=5',
         'next': 'http://testserver/?limit=5&offset=15',
         'count': 100
     }
     assert context == {
         'previous_url':
         'http://testserver/?limit=5&offset=5',
         'next_url':
         'http://testserver/?limit=5&offset=15',
         'page_links': [
             PageLink('http://testserver/?limit=5', 1, False, False),
             PageLink('http://testserver/?limit=5&offset=5', 2, False,
                      False),
             PageLink('http://testserver/?limit=5&offset=10', 3, True,
                      False),
             PageLink('http://testserver/?limit=5&offset=15', 4, False,
                      False),
             PAGE_BREAK,
             PageLink('http://testserver/?limit=5&offset=95', 20, False,
                      False),
         ]
     }
Пример #4
0
 def test_last_page(self):
     request = Request(factory.get('/', {'page': 'last'}))
     queryset = self.paginate_queryset(request)
     content = self.get_paginated_content(queryset)
     context = self.get_html_context()
     assert queryset == [96, 97, 98, 99, 100]
     assert content == {
         'results': [96, 97, 98, 99, 100],
         'previous': 'http://testserver/?page=19',
         'next': None,
         'count': 100
     }
     assert context == {
         'previous_url':
         'http://testserver/?page=19',
         'next_url':
         None,
         'page_links': [
             PageLink('http://testserver/', 1, False, False),
             PAGE_BREAK,
             PageLink('http://testserver/?page=18', 18, False, False),
             PageLink('http://testserver/?page=19', 19, False, False),
             PageLink('http://testserver/?page=20', 20, True, False),
         ]
     }
Пример #5
0
 def test_no_offset(self):
     request = Request(factory.get('/', {'limit': 5}))
     queryset = self.paginate_queryset(request)
     content = self.get_paginated_content(queryset)
     context = self.get_html_context()
     assert queryset == [1, 2, 3, 4, 5]
     assert content == {
         'results': [1, 2, 3, 4, 5],
         'previous': None,
         'next': 'http://testserver/?limit=5&offset=5',
         'count': 100
     }
     assert context == {
         'previous_url':
         None,
         'next_url':
         'http://testserver/?limit=5&offset=5',
         'page_links': [
             PageLink('http://testserver/?limit=5', 1, True, False),
             PageLink('http://testserver/?limit=5&offset=5', 2, False,
                      False),
             PageLink('http://testserver/?limit=5&offset=10', 3, False,
                      False),
             PAGE_BREAK,
             PageLink('http://testserver/?limit=5&offset=95', 20, False,
                      False),
         ]
     }
     assert self.pagination.display_page_controls
     assert isinstance(self.pagination.to_html(), type(''))
Пример #6
0
    def test_no_offset(self):
        request = Request(factory.get('/', {'limit': 5}))
        queryset = self.paginate_queryset(request)
        content = self.get_paginated_content(queryset)
        context = self.get_html_context()
        assert queryset == [1, 2, 3, 4, 5]
        assert content == [1, 2, 3, 4, 5]
        assert context == {
            'previous_url':
            None,
            'next_url':
            'http://testserver/?limit=5&offset=5',
            'page_links': [
                PageLink('http://testserver/?limit=5', 1, True, False),
                PageLink('http://testserver/?limit=5&offset=5', 2, False,
                         False),
                PageLink('http://testserver/?limit=5&offset=10', 3, False,
                         False),
                PAGE_BREAK,
                PageLink('http://testserver/?limit=5&offset=95', 20, False,
                         False),
            ],
        }
        assert self.pagination.display_page_controls

        content_range_data = self.get_content_range_data(queryset)
        assert content_range_data == 'items 0-4/100'
Пример #7
0
 def test_second_page(self):
     request = Request(factory.get('/', {'page': 2}))
     queryset = self.paginate_queryset(request)
     content = self.get_paginated_content(queryset)
     context = self.get_html_context()
     assert queryset == [6, 7, 8, 9, 10]
     assert content == {
         'results': [6, 7, 8, 9, 10],
         'previous': 'http://testserver/',
         'next': 'http://testserver/?page=3',
         'count': 100
     }
     assert context == {
         'previous_url':
         'http://testserver/',
         'next_url':
         'http://testserver/?page=3',
         'page_links': [
             PageLink('http://testserver/', 1, False, False),
             PageLink('http://testserver/?page=2', 2, True, False),
             PageLink('http://testserver/?page=3', 3, False, False),
             PAGE_BREAK,
             PageLink('http://testserver/?page=20', 20, False, False),
         ]
     }
Пример #8
0
    def test_first_offset(self):
        request = Request(factory.get('/', {'limit': 5, 'offset': 5}))
        queryset = self.paginate_queryset(request)
        content = self.get_paginated_content(queryset)
        context = self.get_html_context()
        assert queryset == [6, 7, 8, 9, 10]
        assert content == [6, 7, 8, 9, 10]
        assert context == {
            'previous_url':
            'http://testserver/?limit=5',
            'next_url':
            'http://testserver/?limit=5&offset=10',
            'page_links': [
                PageLink('http://testserver/?limit=5', 1, False, False),
                PageLink('http://testserver/?limit=5&offset=5', 2, True,
                         False),
                PageLink('http://testserver/?limit=5&offset=10', 3, False,
                         False),
                PAGE_BREAK,
                PageLink('http://testserver/?limit=5&offset=95', 20, False,
                         False),
            ],
        }

        content_range_data = self.get_content_range_data(queryset)
        assert content_range_data == 'items 5-9/100'
 def test_last_page(self):
     request = Request(factory.get("/", {"page": "last"}))
     queryset = self.paginate_queryset(request)
     response = self.get_paginated_response(queryset)
     context = self.get_html_context()
     assert queryset == [96, 97, 98, 99, 100]
     assert response.data == [96, 97, 98, 99, 100]
     assert response["Link"] == (
         '<http://testserver/?page=19>; rel="prev", '
         '<http://testserver/>; rel="first"'
     )
     assert context == {
         "previous_url": "http://testserver/?page=19",
         "next_url": None,
         "page_links": [
             PageLink("http://testserver/", 1, False, False),
             PAGE_BREAK,
             PageLink("http://testserver/?page=18", 18, False, False),
             PageLink("http://testserver/?page=19", 19, False, False),
             PageLink("http://testserver/?page=20", 20, True, False),
         ],
     }
 def test_last_page(self):
     request = Request(factory.get('/', {'page': 'last'}))
     queryset = self.paginate_queryset(request)
     response = self.get_paginated_response(queryset)
     context = self.get_html_context()
     assert queryset == [96, 97, 98, 99, 100]
     assert response.data == [96, 97, 98, 99, 100]
     assert response['Link'] == ('<http://testserver/>; rel="first", '
                                 '<http://testserver/?page=19>; rel="prev"')
     assert context == {
         'previous_url':
         'http://testserver/?page=19',
         'next_url':
         None,
         'page_links': [
             PageLink('http://testserver/', 1, False, False),
             PAGE_BREAK,
             PageLink('http://testserver/?page=18', 18, False, False),
             PageLink('http://testserver/?page=19', 19, False, False),
             PageLink('http://testserver/?page=20', 20, True, False),
         ]
     }
 def test_second_page(self):
     request = Request(factory.get("/", {"page": 2}))
     queryset = self.paginate_queryset(request)
     response = self.get_paginated_response(queryset)
     context = self.get_html_context()
     assert queryset == [6, 7, 8, 9, 10]
     assert response.data == [6, 7, 8, 9, 10]
     assert response["Link"] == (
         '<http://testserver/>; rel="prev", '
         '<http://testserver/?page=3>; rel="next", '
         '<http://testserver/>; rel="first", '
         '<http://testserver/?page=20>; rel="last"'
     )
     assert context == {
         "previous_url": "http://testserver/",
         "next_url": "http://testserver/?page=3",
         "page_links": [
             PageLink("http://testserver/", 1, False, False),
             PageLink("http://testserver/?page=2", 2, True, False),
             PageLink("http://testserver/?page=3", 3, False, False),
             PAGE_BREAK,
             PageLink("http://testserver/?page=20", 20, False, False),
         ],
     }
 def test_no_page_number(self):
     request = Request(factory.get("/"))
     queryset = self.paginate_queryset(request)
     response = self.get_paginated_response(queryset)
     context = self.get_html_context()
     assert queryset == [1, 2, 3, 4, 5]
     assert response.data == [1, 2, 3, 4, 5]
     assert response["Link"] == (
         '<http://testserver/?page=2>; rel="next", '
         '<http://testserver/?page=20>; rel="last"'
     )
     assert context == {
         "previous_url": None,
         "next_url": "http://testserver/?page=2",
         "page_links": [
             PageLink("http://testserver/", 1, True, False),
             PageLink("http://testserver/?page=2", 2, False, False),
             PageLink("http://testserver/?page=3", 3, False, False),
             PAGE_BREAK,
             PageLink("http://testserver/?page=20", 20, False, False),
         ],
     }
     assert self.pagination.display_page_controls
     assert isinstance(self.pagination.to_html(), type(""))
 def test_second_page(self):
     request = Request(factory.get('/', {'page': 2}))
     queryset = self.paginate_queryset(request)
     response = self.get_paginated_response(queryset)
     context = self.get_html_context()
     assert queryset == [6, 7, 8, 9, 10]
     assert response.data == [6, 7, 8, 9, 10]
     assert response['Link'] == ('<http://testserver/>; rel="first", '
                                 '<http://testserver/>; rel="prev", '
                                 '<http://testserver/?page=3>; rel="next", '
                                 '<http://testserver/?page=20>; rel="last"')
     assert context == {
         'previous_url':
         'http://testserver/',
         'next_url':
         'http://testserver/?page=3',
         'page_links': [
             PageLink('http://testserver/', 1, False, False),
             PageLink('http://testserver/?page=2', 2, True, False),
             PageLink('http://testserver/?page=3', 3, False, False),
             PAGE_BREAK,
             PageLink('http://testserver/?page=20', 20, False, False),
         ]
     }
 def test_no_page_number(self):
     request = Request(factory.get('/'))
     queryset = self.paginate_queryset(request)
     response = self.get_paginated_response(queryset)
     context = self.get_html_context()
     assert queryset == [1, 2, 3, 4, 5]
     assert response.data == [1, 2, 3, 4, 5]
     assert response['Link'] == ('<http://testserver/?page=2>; rel="next", '
                                 '<http://testserver/?page=20>; rel="last"')
     assert context == {
         'previous_url':
         None,
         'next_url':
         'http://testserver/?page=2',
         'page_links': [
             PageLink('http://testserver/', 1, True, False),
             PageLink('http://testserver/?page=2', 2, False, False),
             PageLink('http://testserver/?page=3', 3, False, False),
             PAGE_BREAK,
             PageLink('http://testserver/?page=20', 20, False, False),
         ]
     }
     assert self.pagination.display_page_controls
     assert isinstance(self.pagination.to_html(), type(''))
 def test_no_page_number(self):
     request = Request(factory.get('/'))
     queryset = self.paginate_queryset(request)
     content = self.get_paginated_content(queryset)
     context = self.get_html_context()
     assert queryset == [1]
     assert content == {
         'results': [1, ],
         'previous': None,
         'next': None,
         'count': 1
     }
     assert context == {
         'previous_url': None,
         'next_url': None,
         'page_links': [
             PageLink('http://testserver/', 1, True, False),
         ]
     }
     assert not self.pagination.display_page_controls
     assert isinstance(self.pagination.to_html(), type(''))
    def test_limit_zero(self):
        """
        A limit of 0 should return empty results.
        """
        request = Request(factory.get('/', {'limit': 0, 'offset': 10}))
        queryset = self.paginate_queryset(request)
        context = self.get_html_context()
        content = self.get_paginated_content(queryset)

        assert context == {
            'previous_url': 'http://testserver/?limit=0&offset=10',
            'page_links': [
                PageLink(
                    url='http://testserver/?limit=0',
                    number=1,
                    is_active=True,
                    is_break=False
                )
            ],
            'next_url': 'http://testserver/?limit=0&offset=10'
        }

        assert queryset == []
        assert content.get('results') == []