Example #1
0
    def test_context_not_in_results(self):
        """Test the case in which context is not in the results."""
        portal = self.portal
        request = portal.REQUEST
        query = json.dumps({
            'portal_type': 'Document',
            'sort_on': 'sortable_title',
            'SearchableText': 'Great title'
        })
        session = request.SESSION
        session[QUERY] = query
        docs = []
        for x in range(10):
            name = "mydoc-{}".format(x)
            doc = api.content.create(id=name,
                                     title="Great title",
                                     type='Document',
                                     container=portal)
            docs.append(doc)

        old_previous_uids = list(reversed([doc.UID() for doc in docs[:5]]))  # noqa #pylint: disable=C0301
        session[PREVIOUS_UIDS] = json.dumps(old_previous_uids)
        old_next_uids = [doc.UID() for doc in docs[8:]]
        session[NEXT_UIDS] = json.dumps(old_next_uids)
        viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
        viewlet.update()
        self.assertEqual(session[QUERY], query)
        self.assertTrue(viewlet.is_navigable)
        self.assertEqual(json.loads(session[PREVIOUS_UIDS]), old_previous_uids)
        self.assertEqual(json.loads(session[NEXT_UIDS]), old_next_uids)
        self.assertEqual(viewlet.previous_uids, old_previous_uids)
        self.assertEqual(viewlet.next_uids, old_next_uids)
    def test_context_not_in_results(self):
        """Test the case in which context is not in the results."""
        portal = self.portal
        request = portal.REQUEST
        query = json.dumps({
            'portal_type': 'Document',
            'sort_on': 'sortable_title',
            'SearchableText': 'Great title'
            })
        session = request.SESSION
        session[QUERY] = query
        docs = []
        for x in range(10):
            name = "mydoc-{}".format(x)
            doc = api.content.create(
                id=name, title="Great title",
                type='Document', container=portal)
            docs.append(doc)

        old_previous_uids = list(reversed([doc.UID() for doc in docs[:5]]))  # noqa #pylint: disable=C0301
        session[PREVIOUS_UIDS] = json.dumps(old_previous_uids)
        old_next_uids = [doc.UID() for doc in docs[8:]]
        session[NEXT_UIDS] = json.dumps(old_next_uids)
        viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
        viewlet.update()
        self.assertEqual(session[QUERY], query)
        self.assertTrue(viewlet.is_navigable)
        self.assertEqual(
            json.loads(session[PREVIOUS_UIDS]), old_previous_uids)
        self.assertEqual(
            json.loads(session[NEXT_UIDS]), old_next_uids)
        self.assertEqual(viewlet.previous_uids, old_previous_uids)
        self.assertEqual(viewlet.next_uids, old_next_uids)
Example #3
0
    def test_no_query_set(self):
        portal = self.portal
        request = portal.REQUEST
        viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
        viewlet.update()
        session = request.SESSION
        for key in [QUERY, SEARCH_URL, PREVIOUS_UIDS, NEXT_UIDS]:
            self.assertNotIn(key, session)

        self.assertFalse(viewlet.is_navigable)
    def test_no_query_set(self):
        portal = self.portal
        request = portal.REQUEST
        viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
        viewlet.update()
        session = request.SESSION
        for key in [QUERY, SEARCH_URL, PREVIOUS_UIDS, NEXT_UIDS]:
            self.assertNotIn(key, session)

        self.assertFalse(viewlet.is_navigable)
Example #5
0
 def test_alone(self):
     portal = self.portal
     request = portal.REQUEST
     session = request.SESSION
     session[QUERY] = query
     viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
     viewlet.update()
     self.assertNotIn(QUERY, session)
     self.assertNotIn(PREVIOUS_UIDS, session)
     self.assertNotIn(NEXT_UIDS, session)
     self.assertFalse(viewlet.is_navigable)
 def test_alone(self):
     portal = self.portal
     request = portal.REQUEST
     session = request.SESSION
     session[QUERY] = query
     viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
     viewlet.update()
     self.assertNotIn(QUERY, session)
     self.assertNotIn(PREVIOUS_UIDS, session)
     self.assertNotIn(NEXT_UIDS, session)
     self.assertFalse(viewlet.is_navigable)
 def test_one_before(self):
     """Test when there is a previous item and no next item."""
     portal = self.portal
     request = portal.REQUEST
     session = request.SESSION
     session[QUERY] = query
     doc1 = self.doc
     doc2 = api.content.create(
         id='mydoc2', type='Document', container=portal)
     viewlet = NextPrevNavigationViewlet(doc2, request, self.view)
     viewlet.update()
     self.assertEqual(session[QUERY], query)
     previous_uids = json.loads(session[PREVIOUS_UIDS])
     next_uids = json.loads(session[NEXT_UIDS])
     self.assertIn(doc1.UID(), previous_uids)
     self.assertNotIn(doc1.UID(), next_uids)
     self.assertNotIn(doc2.UID(), previous_uids)
     self.assertNotIn(doc2.UID(), next_uids)
     self.assertTrue(viewlet.is_navigable)
Example #8
0
 def test_one_before(self):
     """Test when there is a previous item and no next item."""
     portal = self.portal
     request = portal.REQUEST
     session = request.SESSION
     session[QUERY] = query
     doc1 = self.doc
     doc2 = api.content.create(id='mydoc2',
                               type='Document',
                               container=portal)
     viewlet = NextPrevNavigationViewlet(doc2, request, self.view)
     viewlet.update()
     self.assertEqual(session[QUERY], query)
     previous_uids = json.loads(session[PREVIOUS_UIDS])
     next_uids = json.loads(session[NEXT_UIDS])
     self.assertIn(doc1.UID(), previous_uids)
     self.assertNotIn(doc1.UID(), next_uids)
     self.assertNotIn(doc2.UID(), previous_uids)
     self.assertNotIn(doc2.UID(), next_uids)
     self.assertTrue(viewlet.is_navigable)
 def test_maxresults(self):
     portal = self.portal
     request = portal.REQUEST
     session = request.SESSION
     api.content.create(id='mydoc2', type='Document', container=portal)
     session[QUERY] = query
     viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
     viewlet.update()
     self.assertIn(QUERY, session)
     self.assertIn(PREVIOUS_UIDS, session)
     self.assertIn(NEXT_UIDS, session)
     self.assertTrue(viewlet.is_navigable)
     # we set maxresults to 1
     api.portal.set_registry_record(name='collective.querynextprev.maxresults', value=1)
     self.assertIn(QUERY, session)
     viewlet.update()
     self.assertNotIn(QUERY, session)
     self.assertNotIn(PREVIOUS_UIDS, session)
     self.assertNotIn(NEXT_UIDS, session)
     self.assertFalse(viewlet.is_navigable)
Example #10
0
    def test_window(self):
        """Test that 10 items before and 10 items after are kept in session."""
        portal = self.portal
        request = portal.REQUEST
        session = request.SESSION
        session[QUERY] = query
        for x in range(100):
            name = "mydoc-{}".format(x)
            api.content.create(id=name, type='Document', container=portal)

        viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
        viewlet.update()
        self.assertEqual(session[QUERY], query)
        previous_uids = json.loads(session[PREVIOUS_UIDS])
        next_uids = json.loads(session[NEXT_UIDS])
        self.assertEqual(len(previous_uids), 0)
        self.assertEqual(len(next_uids), 10)
        next_ = [api.content.get(UID=uid).getId() for uid in next_uids]
        self.assertEqual(next_, [
            'mydoc-0', 'mydoc-1', 'mydoc-2', 'mydoc-3', 'mydoc-4', 'mydoc-5',
            'mydoc-6', 'mydoc-7', 'mydoc-8', 'mydoc-9'
        ])
        self.assertTrue(viewlet.is_navigable)

        doc = portal['mydoc-50']
        viewlet = NextPrevNavigationViewlet(doc, request, self.view)
        viewlet.update()
        self.assertEqual(session[QUERY], query)
        previous_uids = json.loads(session[PREVIOUS_UIDS])
        next_uids = json.loads(session[NEXT_UIDS])
        self.assertEqual(len(previous_uids), 10)
        self.assertEqual(len(next_uids), 10)
        self.assertTrue(viewlet.is_navigable)

        previous = [api.content.get(UID=uid).getId() for uid in previous_uids]
        self.assertEqual(previous, [
            'mydoc-49', 'mydoc-48', 'mydoc-47', 'mydoc-46', 'mydoc-45',
            'mydoc-44', 'mydoc-43', 'mydoc-42', 'mydoc-41', 'mydoc-40'
        ])

        next_ = [api.content.get(UID=uid).getId() for uid in next_uids]
        self.assertEqual(next_, [
            'mydoc-51', 'mydoc-52', 'mydoc-53', 'mydoc-54', 'mydoc-55',
            'mydoc-56', 'mydoc-57', 'mydoc-58', 'mydoc-59', 'mydoc-60'
        ])
    def test_window(self):
        """Test that 10 items before and 10 items after are kept in session."""
        portal = self.portal
        request = portal.REQUEST
        session = request.SESSION
        session[QUERY] = query
        for x in range(100):
            name = "mydoc-{}".format(x)
            api.content.create(id=name, type='Document', container=portal)

        viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
        viewlet.update()
        self.assertEqual(session[QUERY], query)
        previous_uids = json.loads(session[PREVIOUS_UIDS])
        next_uids = json.loads(session[NEXT_UIDS])
        self.assertEqual(len(previous_uids), 0)
        self.assertEqual(len(next_uids), 10)
        next_ = [api.content.get(UID=uid).getId() for uid in next_uids]
        self.assertEqual(
            next_,
            ['mydoc-0', 'mydoc-1', 'mydoc-2', 'mydoc-3', 'mydoc-4',
             'mydoc-5', 'mydoc-6', 'mydoc-7', 'mydoc-8', 'mydoc-9']
            )
        self.assertTrue(viewlet.is_navigable)

        doc = portal['mydoc-50']
        viewlet = NextPrevNavigationViewlet(doc, request, self.view)
        viewlet.update()
        self.assertEqual(session[QUERY], query)
        previous_uids = json.loads(session[PREVIOUS_UIDS])
        next_uids = json.loads(session[NEXT_UIDS])
        self.assertEqual(len(previous_uids), 10)
        self.assertEqual(len(next_uids), 10)
        self.assertTrue(viewlet.is_navigable)

        previous = [api.content.get(UID=uid).getId() for uid in previous_uids]
        self.assertEqual(
            previous,
            ['mydoc-49', 'mydoc-48', 'mydoc-47', 'mydoc-46', 'mydoc-45',
             'mydoc-44', 'mydoc-43', 'mydoc-42', 'mydoc-41', 'mydoc-40']
            )

        next_ = [api.content.get(UID=uid).getId() for uid in next_uids]
        self.assertEqual(
            next_,
            ['mydoc-51', 'mydoc-52', 'mydoc-53', 'mydoc-54', 'mydoc-55',
             'mydoc-56', 'mydoc-57', 'mydoc-58', 'mydoc-59', 'mydoc-60']
            )
Example #12
0
 def test_maxresults(self):
     portal = self.portal
     request = portal.REQUEST
     session = request.SESSION
     api.content.create(id='mydoc2', type='Document', container=portal)
     session[QUERY] = query
     viewlet = NextPrevNavigationViewlet(self.doc, request, self.view)
     viewlet.update()
     self.assertIn(QUERY, session)
     self.assertIn(PREVIOUS_UIDS, session)
     self.assertIn(NEXT_UIDS, session)
     self.assertTrue(viewlet.is_navigable)
     # we set maxresults to 1
     api.portal.set_registry_record(
         name='collective.querynextprev.maxresults', value=1)
     self.assertIn(QUERY, session)
     viewlet.update()
     self.assertNotIn(QUERY, session)
     self.assertNotIn(PREVIOUS_UIDS, session)
     self.assertNotIn(NEXT_UIDS, session)
     self.assertFalse(viewlet.is_navigable)