コード例 #1
0
    def test_multiple_providers(self):
        collections = []
        for i in range(3):              
            self.folder.invokeFactory('Topic', 'collection_%s'%i)
            collection = getattr(self.folder, 'collection_%s'%i)
            crit = collection.addCriterion('portal_type', 'ATSimpleStringCriterion')
            crit.setValue('Document')
            collections.append(collection)
        field = self.folder.Schema().getField('carouselprovider')
        field.set(self.folder, tuple(collections))

        viewlet = CarouselViewlet(self.folder, self.app.REQUEST, None, None)
        
        self.failUnless(len(viewlet.getProviders()) >= 3)             
コード例 #2
0
    def test_multiple_providers(self):
        collections = []
        for i in range(3):
            self.folder.invokeFactory('Collection', 'collection_%s' % i)
            collection = getattr(self.folder, 'collection_%s' % i)
            query = [{
                'i': 'portal_type',
                'o': 'plone.app.querystring.operation.selection.is',
                'v': ['Document']
            }]
            collection.setQuery(query)
            collections.append(collection)
        field = self.folder.Schema().getField('carouselprovider')
        field.set(self.folder, tuple(collections))

        viewlet = CarouselViewlet(self.folder, self.app.REQUEST, None, None)

        self.failUnless(len(viewlet.getProviders()) >= 3)
コード例 #3
0
    def test_multiple_providers(self):
        collections = []
        for i in range(3):
            self.folder.invokeFactory('Collection', 'collection_%s' % i)
            collection = getattr(self.folder, 'collection_%s' % i)
            query = [{
                'i': 'portal_type',
                'o': 'plone.app.querystring.operation.selection.is',
                'v': ['Document']
            }]
            collection.setQuery(query)
            collections.append(collection)
        field = self.folder.Schema().getField('carouselprovider')
        field.set(self.folder, tuple(collections))

        viewlet = CarouselViewlet(self.folder, self.app.REQUEST, None, None)

        self.failUnless(len(viewlet.getProviders()) >= 3)
コード例 #4
0
    def test_edit_carousel_link(self):
        viewlet = CarouselViewlet(self.folder, self.app.REQUEST, None, None)
        carousel_criteria = self.folder.collection.absolute_url() + \
            '/edit'
        self.assertEqual(viewlet.editCarouselLink(viewlet.getProviders()[0]),
                         carousel_criteria)

        # Check whether anonymous users get "edit" link. First check that
        # Manager gets it:
        self.failUnless(viewlet.canSeeEditLink(viewlet.getProviders()[0]))

        # Then we switch user to Anonymous:
        self.setRoles([])
        self.logout()
        self.failIf(viewlet.canSeeEditLink(viewlet.getProviders()[0]))
コード例 #5
0
    def test_edit_carousel_link(self):
        viewlet = CarouselViewlet(self.folder, self.app.REQUEST, None, None)
        carousel_criteria = self.folder.collection.absolute_url() + '/criterion_edit_form'
        self.assertEqual(viewlet.editCarouselLink(viewlet.getProviders()[0]), carousel_criteria)

        # Check whether anonymous users get "edit" link. First check that Manager gets it:
        self.failUnless(viewlet.canSeeEditLink(viewlet.getProviders()[0]))
        
        # Then we switch user to Anonymous:
        self.setRoles([])
        self.logout()
        self.failIf(viewlet.canSeeEditLink(viewlet.getProviders()[0]))
コード例 #6
0
    def test_viewlet_rendering(self):
        # add a few documents
        for i in range(10):
            self.folder.invokeFactory('Document', 'document_%s'%i)
            getattr(self.folder, 'document_%s'%i).reindexObject()

        collection_num_items = len(self.folder.collection.queryCatalog())
        # We better have some documents in the collection's results
        self.failUnless(collection_num_items >= 10)

        field = self.folder.Schema().getField('carouselprovider')
        # technically the following checkup is done in test_field, but we
        # better check again
        self.assertEqual(field.get(self.folder), [self.folder.collection])

        viewlet = CarouselViewlet(self.folder, self.app.REQUEST, None, None)

        # first check getProviders()
        self.assertEqual(viewlet.getProviders(), [self.folder.collection])

        # check results(). We get not more than 7 items even though the
        # collection returns >=7 results, don't we?
        self.failUnless(len(viewlet.results(viewlet.getProviders()[0])) == 7)
        results = [result.id for result in
                   viewlet.results(viewlet.getProviders()[0])]
        doc_ids = [id for id in self.folder.contentIds()[:7]
                   if 'document' in id]
        for doc_id in doc_ids:
            self.failUnless(doc_id in results)

        # Test that we get correct tiles in the carousel
        for result in viewlet.results(viewlet.getProviders()[0]):
            item_type = result.portal_type
            if item_type == 'Document':
                self.failUnless('<p>This is a PAGE tile</p>' in
                                viewlet.get_tile(result.getObject()))
            if item_type == 'Event':
                self.failUnless('<p>This is a DEFAULT tile</p>' in
                                viewlet.get_tile(result.getObject()))
            if item_type == 'News Item':
                self.failUnless('<p>This is a NEWS ITEM tile</p>' in
                                viewlet.get_tile(result.getObject()))

        # Now we apply new custom tile registration for event object
        event = getattr(self.folder, 'carousel-event')
        alsoProvides(event, ICustomType)
        self.failIf('<p>This is a DEFAULT tile</p>' in viewlet.get_tile(event))

        # We revert event to standard state (without custom tile registration)
        noLongerProvides(event, ICustomType)
        # We should get our DEFAULT tile again
        self.failIf('<p>This is a CUSTOM DEFAULT tile</p>' in
                    viewlet.get_tile(event))
コード例 #7
0
    def test_viewlet_rendering(self):
        # add a few documents
        for i in range(10):
            self.folder.invokeFactory('Document', 'document_%s' % i)
            getattr(self.folder, 'document_%s' % i).reindexObject()

        collection_num_items = len(self.folder.collection.results())
        # We better have some documents in the collection's results
        self.failUnless(collection_num_items >= 10)

        field = self.folder.Schema().getField('carouselprovider')
        # technically the following checkup is done in test_field, but we
        # better check again
        self.assertEqual(field.get(self.folder), [self.folder.collection])

        viewlet = CarouselViewlet(self.folder, self.app.REQUEST, None, None)

        # first check getProviders()
        self.assertEqual(viewlet.getProviders(), [self.folder.collection])

        # check results(). We get not more than 7 items even though the
        # collection returns >=7 results, don't we?
        self.assertEqual(len(list(viewlet.results(viewlet.getProviders()[0]))),
                         7)
        results = [
            result.id for result in viewlet.results(viewlet.getProviders()[0])
        ]
        doc_ids = [
            id for id in self.folder.contentIds()[:7] if 'document' in id
        ]
        for doc_id in doc_ids:
            self.failUnless(doc_id in results)

        # Test that we get correct tiles in the carousel
        for result in viewlet.results(viewlet.getProviders()[0]):
            item_type = result.portal_type
            if item_type == 'Document':
                self.failUnless('<p>This is a PAGE tile</p>' in
                                viewlet.get_tile(result.getObject()))
            if item_type == 'Event':
                self.failUnless('<p>This is a DEFAULT tile</p>' in
                                viewlet.get_tile(result.getObject()))
            if item_type == 'News Item':
                self.failUnless('<p>This is a NEWS ITEM tile</p>' in
                                viewlet.get_tile(result.getObject()))

        # Now we apply new custom tile registration for event object
        event = getattr(self.folder, 'carousel-event')
        alsoProvides(event, ICustomType)
        self.failIf('<p>This is a DEFAULT tile</p>' in viewlet.get_tile(event))

        # We revert event to standard state (without custom tile registration)
        noLongerProvides(event, ICustomType)
        # We should get our DEFAULT tile again
        self.failIf(
            '<p>This is a CUSTOM DEFAULT tile</p>' in viewlet.get_tile(event))
コード例 #8
0
 def test_viewlet_is_available(self):
     request = self.app.REQUEST
     context = self.folder
     viewlet = CarouselViewlet(context, request, None, None)
     self.failUnless(viewlet)