コード例 #1
0
    def test_complete(self):
        parser = LinkHeaderParser(LINK_HEADER_COMPLETE)
        expected_links = [LinkHeaderField.from_string(link.strip()) for link
                          in LINK_HEADER_COMPLETE.split(',')]
        expected_links.sort(key=lambda e: e.url)

        actual_links = parser.links[:]
        actual_links.sort(key=lambda e: e.url)

        self.assertListEqual(expected_links, actual_links)
コード例 #2
0
    def get_paginated_response(self, data):

        next_url = self.get_next_link()
        previous_url = self.get_previous_link()

        link_parts = []

        # if we have a next page, then we know we have a last, as well.
        if next_url is not None:
            link_parts.extend([
                LinkHeaderField(url=next_url,
                                rel=LinkHeaderRel.next,
                                title=str(self.page.number + 1)),
                LinkHeaderField(url=self.get_last_url(),
                                rel=LinkHeaderRel.last,
                                title=self.page.paginator.num_pages),
            ])

        # if we have a previous page, then we know we have a first page, too.
        if previous_url is not None:
            link_parts.extend([
                LinkHeaderField(url=previous_url,
                                rel=LinkHeaderRel.prev,
                                title=str(self.page.number - 1)),
                LinkHeaderField(url=self.get_first_url(),
                                rel=LinkHeaderRel.first,
                                title=str(1)),
            ])

        headers = {
            'X-Total-Results': self.page.paginator.count,
            'X-Page-Size': self.get_page_size(self.request),
            'X-Page': self.page.number
        }

        if link_parts:
            headers['Link'] = ", ".join([str(link) for link in link_parts])

        return Response(data, headers=headers)
コード例 #3
0
 def test_stringification(self):
     field = LinkHeaderField.from_string(LINK_HEADER_NEXT)
     self.assertEqual(str(field), LINK_HEADER_NEXT)
コード例 #4
0
 def test_stringification_no_title(self):
     field = LinkHeaderField.from_string(LINK_HEADER_LAST)
     self.assertEqual(str(field), LINK_HEADER_LAST)
コード例 #5
0
 def test_sad_no_rel(self):
     self.assertRaises(
         MalformedLinkHeader,
         lambda: LinkHeaderField.from_string("<http://google.com>; meh=I am still malformed"))
コード例 #6
0
 def test_sad_no_url(self):
     self.assertRaises(
         MalformedLinkHeader,
         lambda: LinkHeaderField.from_string('Oh f**k.. I am malformed; rel="next"'))
コード例 #7
0
 def test_title(self):
     field = LinkHeaderField.from_string(LINK_HEADER_NEXT)
     self.assertEqual(field.title, "The Next Page")
コード例 #8
0
 def test_rel(self):
     field = LinkHeaderField.from_string(LINK_HEADER_LAST)
     self.assertEqual(field.rel, LinkHeaderRel.last)
コード例 #9
0
 def test_url(self):
     field = LinkHeaderField.from_string(LINK_HEADER_LAST)
     self.assertEqual(field.url, 'https://api.github.com/search/code?q=addClass+user%3Amozilla&page=34')