示例#1
0
    def test_pagination_wrong_page_number(self):
        query = {
            'count': 10,
            'results': [x for x in range(10)],
        }
        data_dict = {'page': '-1'}

        with pytest.raises(toolkit.ValidationError):
            _pagination_info(query, data_dict)
示例#2
0
    def test_pagination_without_site_url(self, mock_request):

        mock_request.params = {}
        mock_request.host_url = 'http://ckan.example.com'
        mock_request.path = '/feed/catalog.xml'

        # No page defined (defaults to 1)
        query = {
            'count': 12,
            'results': [x for x in xrange(10)],
        }
        data_dict = {
            'page': None
        }

        pagination = _pagination_info(query, data_dict)

        eq_(pagination['count'], 12)
        eq_(pagination['items_per_page'],
            config.get('ckanext.dcat.datasets_per_page'))
        eq_(pagination['current'], 'http://ckan.example.com/feed/catalog.xml?page=1')
        eq_(pagination['first'], 'http://ckan.example.com/feed/catalog.xml?page=1')
        eq_(pagination['last'], 'http://ckan.example.com/feed/catalog.xml?page=2')
        eq_(pagination['next'], 'http://ckan.example.com/feed/catalog.xml?page=2')
        assert 'previous' not in pagination
示例#3
0
    def test_pagination_keeps_only_supported_params(self, mock_request):

        mock_request.params = {'a': 1, 'b': 2, 'modified_since': '2018-03-22', 'profiles': 'schemaorg'}
        mock_request.host_url = 'http://ckan.example.com'
        mock_request.path = '/feed/catalog.xml'

        # No page defined (defaults to 1)
        query = {
            'count': 12,
            'results': [x for x in xrange(10)],
        }
        data_dict = {
            'page': None
        }

        pagination = _pagination_info(query, data_dict)

        eq_(pagination['count'], 12)
        eq_(pagination['items_per_page'],
            config.get('ckanext.dcat.datasets_per_page'))
        eq_(pagination['current'], 'http://example.com/feed/catalog.xml?modified_since=2018-03-22&profiles=schemaorg&page=1')
        eq_(pagination['first'], 'http://example.com/feed/catalog.xml?modified_since=2018-03-22&profiles=schemaorg&page=1')
        eq_(pagination['last'], 'http://example.com/feed/catalog.xml?modified_since=2018-03-22&profiles=schemaorg&page=2')
        eq_(pagination['next'], 'http://example.com/feed/catalog.xml?modified_since=2018-03-22&profiles=schemaorg&page=2')
        assert 'previous' not in pagination
示例#4
0
    def test_pagination_same_results_than_page_size(self, mock_request):

        mock_request.params = {}
        mock_request.host_url = 'http://ckan.example.com'
        mock_request.path = ''

        # No page defined (defaults to 1)
        query = {
            'count': 10,
            'results': [x for x in xrange(10)],
        }
        data_dict = {
            'page': None
        }

        pagination = _pagination_info(query, data_dict)

        eq_(pagination['count'], 10)
        eq_(pagination['items_per_page'],
            config.get('ckanext.dcat.datasets_per_page'))
        eq_(pagination['current'], 'http://example.com?page=1')
        eq_(pagination['first'], 'http://example.com?page=1')
        eq_(pagination['last'], 'http://example.com?page=1')
        assert 'next' not in pagination
        assert 'previous' not in pagination
示例#5
0
    def test_pagination_without_site_url(self, mock_request):

        mock_request.params = {}
        mock_request.host_url = 'http://ckan.example.com'
        mock_request.path = '/feed/catalog.xml'

        # No page defined (defaults to 1)
        query = {
            'count': 12,
            'results': [x for x in xrange(10)],
        }
        data_dict = {'page': None}

        pagination = _pagination_info(query, data_dict)

        eq_(pagination['count'], 12)
        eq_(pagination['items_per_page'],
            config.get('ckanext.dcat.datasets_per_page'))
        eq_(pagination['current'],
            'http://ckan.example.com/feed/catalog.xml?page=1')
        eq_(pagination['first'],
            'http://ckan.example.com/feed/catalog.xml?page=1')
        eq_(pagination['last'],
            'http://ckan.example.com/feed/catalog.xml?page=2')
        eq_(pagination['next'],
            'http://ckan.example.com/feed/catalog.xml?page=2')
        assert 'previous' not in pagination
示例#6
0
    def test_pagination_keeps_only_supported_params(self, mock_request):

        mock_request.params = {
            'a': 1,
            'b': 2,
            'modified_since': '2018-03-22',
            'profiles': 'schemaorg'
        }
        mock_request.host_url = 'http://ckan.example.com'
        mock_request.path = '/feed/catalog.xml'

        # No page defined (defaults to 1)
        query = {
            'count': 12,
            'results': [x for x in range(10)],
        }
        data_dict = {'page': None}

        pagination = _pagination_info(query, data_dict)

        assert pagination['count'] == 12
        assert pagination['items_per_page'] == config.get(
            'ckanext.dcat.datasets_per_page')
        assert pagination['current'] == 'http://example.com/feed/catalog.xml?' \
                                        'modified_since=2018-03-22&profiles=schemaorg&page=1'
        assert pagination[
            'first'] == 'http://example.com/feed/catalog.xml?modified_since=2018-03-22&profiles=schemaorg&page=1'
        assert pagination[
            'last'] == 'http://example.com/feed/catalog.xml?modified_since=2018-03-22&profiles=schemaorg&page=2'
        assert pagination[
            'next'] == 'http://example.com/feed/catalog.xml?modified_since=2018-03-22&profiles=schemaorg&page=2'
        assert 'previous' not in pagination
示例#7
0
    def test_pagination_same_results_than_page_size(self, mock_request):

        mock_request.params = {}
        mock_request.host_url = 'http://ckan.example.com'
        mock_request.path = ''

        # No page defined (defaults to 1)
        query = {
            'count': 10,
            'results': [x for x in xrange(10)],
        }
        data_dict = {
            'page': None
        }

        pagination = _pagination_info(query, data_dict)

        eq_(pagination['count'], 10)
        eq_(pagination['items_per_page'],
            config.get('ckanext.dcat.datasets_per_page'))
        eq_(pagination['current'], 'http://example.com?page=1')
        eq_(pagination['first'], 'http://example.com?page=1')
        eq_(pagination['last'], 'http://example.com?page=1')
        assert 'next' not in pagination
        assert 'previous' not in pagination
    def test_pagination_no_results_empty_dict(self):
        query = {
            'count': 0,
            'results': [],
        }
        data_dict = {'page': None}

        pagination = _pagination_info(query, data_dict)

        eq_(pagination, {})
示例#9
0
    def test_pagination_no_results_empty_dict(self):
        query = {
            'count': 0,
            'results': [],
        }
        data_dict = {
            'page': None
        }

        pagination = _pagination_info(query, data_dict)

        eq_(pagination, {})
    def test_pagination_keeps_params(self, mock_request):

        mock_request.params = {'a': 1, 'b': 2}
        mock_request.path_url = 'http://example.com'

        # No page defined (defaults to 1)
        query = {
            'count': 12,
            'results': [x for x in xrange(10)],
        }
        data_dict = {'page': None}

        pagination = _pagination_info(query, data_dict)

        eq_(pagination['count'], 12)
        eq_(pagination['items_per_page'],
            config.get('ckanext.dcat.datasets_per_page'))
        eq_(pagination['current'], 'http://example.com?a=1&b=2&page=1')
        eq_(pagination['first'], 'http://example.com?a=1&b=2&page=1')
        eq_(pagination['last'], 'http://example.com?a=1&b=2&page=2')
        eq_(pagination['next'], 'http://example.com?a=1&b=2&page=2')
        assert 'previous' not in pagination
示例#11
0
    def test_pagination_keeps_params(self, mock_request):

        mock_request.params = {'a': 1, 'b': 2}
        mock_request.path_url = 'http://example.com'

        # No page defined (defaults to 1)
        query = {
            'count': 12,
            'results': [x for x in xrange(10)],
        }
        data_dict = {
            'page': None
        }

        pagination = _pagination_info(query, data_dict)

        eq_(pagination['count'], 12)
        eq_(pagination['items_per_page'],
            config.get('ckanext.dcat.datasets_per_page'))
        eq_(pagination['current'], 'http://example.com?a=1&b=2&page=1')
        eq_(pagination['first'], 'http://example.com?a=1&b=2&page=1')
        eq_(pagination['last'], 'http://example.com?a=1&b=2&page=2')
        eq_(pagination['next'], 'http://example.com?a=1&b=2&page=2')
        assert 'previous' not in pagination
示例#12
0
    def test_pagination(self, mock_request):

        mock_request.params = {}
        mock_request.host_url = 'http://ckan.example.com'
        mock_request.path = ''

        # No page defined (defaults to 1)
        query = {
            'count': 12,
            'results': [x for x in range(10)],
        }
        data_dict = {'page': None}

        pagination = _pagination_info(query, data_dict)

        assert pagination['count'] == 12
        assert pagination['items_per_page'] == config.get(
            'ckanext.dcat.datasets_per_page')
        assert pagination['current'] == 'http://example.com?page=1'
        assert pagination['first'] == 'http://example.com?page=1'
        assert pagination['last'] == 'http://example.com?page=2'
        assert pagination['next'] == 'http://example.com?page=2'
        assert 'previous' not in pagination

        # Page 1
        query = {
            'count': 12,
            'results': [x for x in range(10)],
        }
        data_dict = {'page': 1}

        pagination = _pagination_info(query, data_dict)

        assert pagination['count'] == 12
        assert pagination['items_per_page'] == config.get(
            'ckanext.dcat.datasets_per_page')
        assert pagination['current'] == 'http://example.com?page=1'
        assert pagination['first'] == 'http://example.com?page=1'
        assert pagination['last'] == 'http://example.com?page=2'
        assert pagination['next'] == 'http://example.com?page=2'
        assert 'previous' not in pagination

        # Page 2
        query = {
            'count': 12,
            'results': [x for x in range(2)],
        }
        data_dict = {'page': 2}

        pagination = _pagination_info(query, data_dict)

        assert pagination['count'] == 12

        assert pagination['items_per_page'] == config.get(
            'ckanext.dcat.datasets_per_page')
        assert pagination['current'] == 'http://example.com?page=2'
        assert pagination['first'] == 'http://example.com?page=1'
        assert pagination['last'] == 'http://example.com?page=2'
        assert pagination['previous'] == 'http://example.com?page=1'
        assert 'next' not in pagination

        # Page 3
        query = {
            'count': 12,
            'results': [x for x in range(2)],
        }
        data_dict = {'page': 3}

        pagination = _pagination_info(query, data_dict)

        assert pagination['count'] == 12
        assert pagination['items_per_page'] == config.get(
            'ckanext.dcat.datasets_per_page')
        assert pagination['current'] == 'http://example.com?page=3'
        assert pagination['first'] == 'http://example.com?page=1'
        assert pagination['last'] == 'http://example.com?page=2'
        assert pagination['previous'] == 'http://example.com?page=2'
        assert 'next' not in pagination