Exemplo n.º 1
0
    def test_single_valued_empty(self):
        from Products.Archetypes.Widget import RelatedItemsWidget

        self.field.getName.return_value = 'fieldname'
        self.field.getAccessor.return_value = lambda: None
        self.field.multiValued = False

        with mock.patch('plone.app.widgets.utils.getUtility') as mock_method:
            widget = RelatedItemsWidget()

            self.assertEqual(
                {
                    'name': 'fieldname',
                    'value': '',
                    'pattern': 'relateditems',
                    'pattern_options': {
                        'folderTypes': ['Folder'],
                        'homeText': u'Home',
                        'separator': ';',
                        'orderable': True,
                        'searchAllText': u'Entire site',
                        'searchText': u'Search',
                        'maximumSelectionSize': 1,
                        'vocabularyUrl': '/@@getVocabulary?name='
                                         'plone.app.vocabularies.Catalog'
                                         '&field=fieldname',
                    },
                },
                widget._base_args(self.context, self.field, self.request),
            )
Exemplo n.º 2
0
    def test_multi_valued(self):
        from zope.event import notify
        from zope.interface import implements
        from zope.lifecycleevent import ObjectCreatedEvent
        from plone.uuid.interfaces import IUUID
        from plone.uuid.interfaces import IAttributeUUID
        from Products.Archetypes.Widget import RelatedItemsWidget

        class ExampleContent(object):
            implements(IAttributeUUID)

        with mock.patch('plone.app.widgets.utils.getUtility') as mock_method:
            registry = Mock()
            registry.get.return_value = ['SomeType']
            mock_method.return_value = registry

            obj1 = ExampleContent()
            obj2 = ExampleContent()
            notify(ObjectCreatedEvent(obj1))
            notify(ObjectCreatedEvent(obj2))

            self.field.getName.return_value = 'fieldname'
            self.field.getAccessor.return_value = lambda: [obj1, obj2]
            self.field.multiValued = True
            self.context.portal_registry.get.return_value = ['SomeType']

            widget = RelatedItemsWidget()

            self.assertEqual(
                {
                    'name': 'fieldname',
                    'value': '{};{}'.format(IUUID(obj1), IUUID(obj2)),
                    'pattern': 'relateditems',
                    'pattern_options': {
                        'folderTypes': ['SomeType'],
                        'homeText':
                        u'Home',
                        'searchAllText':
                        u'Entire site',
                        'searchText':
                        u'Search',
                        'separator':
                        ';',
                        'orderable':
                        True,
                        'maximumSelectionSize':
                        -1,
                        'vocabularyUrl':
                        '/@@getVocabulary?name='
                        'plone.app.vocabularies.Catalog'
                        '&field=fieldname',
                    },
                },
                widget._base_args(self.context, self.field, self.request),
            )
Exemplo n.º 3
0
    def test_multi_valued(self):
        from zope.event import notify
        from zope.interface import implementer
        from zope.lifecycleevent import ObjectCreatedEvent
        from plone.uuid.interfaces import IUUID
        from plone.uuid.interfaces import IAttributeUUID
        from Products.Archetypes.Widget import RelatedItemsWidget

        @implementer(IAttributeUUID)
        class ExampleContent(object):
            pass

        obj1 = ExampleContent()
        obj2 = ExampleContent()
        notify(ObjectCreatedEvent(obj1))
        notify(ObjectCreatedEvent(obj2))

        self.field.getName.return_value = 'fieldname'
        self.field.getAccessor.return_value = lambda: [obj1, obj2]
        self.field.multiValued = True

        widget = RelatedItemsWidget()
        base_args = widget._base_args(self.context, self.field, self.request)

        self.assertDictContainsSubset(
            {
                'name': 'fieldname',
                'value': '{};{}'.format(IUUID(obj1), IUUID(obj2)),
                'pattern': 'relateditems',
            }, base_args)

        self.assertDictContainsSubset(
            {
                'separator':
                ';',
                'orderable':
                True,
                'maximumSelectionSize':
                -1,
                'vocabularyUrl':
                '/@@getVocabulary?name='
                'plone.app.vocabularies.Catalog'
                '&field=fieldname',
                'basePath':
                '/Plone/doc',
                'contextPath':
                '/Plone/doc',
                'rootPath':
                '/',
                'rootUrl':
                ''
            }, base_args.get('pattern_options', {}))
    def test_multi_valued(self):
        from zope.event import notify
        from zope.interface import implementer
        from zope.lifecycleevent import ObjectCreatedEvent
        from plone.uuid.interfaces import IUUID
        from plone.uuid.interfaces import IAttributeUUID
        from Products.Archetypes.Widget import RelatedItemsWidget

        @implementer(IAttributeUUID)
        class ExampleContent(object):
            pass

        obj1 = ExampleContent()
        obj2 = ExampleContent()
        notify(ObjectCreatedEvent(obj1))
        notify(ObjectCreatedEvent(obj2))

        self.field.getName.return_value = 'fieldname'
        self.field.getAccessor.return_value = lambda: [obj1, obj2]
        self.field.multiValued = True

        widget = RelatedItemsWidget()

        self.assertEqual(
            {
                'name': 'fieldname',
                'value': '{};{}'.format(IUUID(obj1), IUUID(obj2)),
                'pattern': 'relateditems',
                'pattern_options': {
                    'folderTypes': ['Folder'],
                    'homeText': u'Home',
                    'searchAllText': u'Entire site',
                    'searchText': u'Search',
                    'separator': ';',
                    'orderable': True,
                    'maximumSelectionSize': -1,
                    'vocabularyUrl': '/@@getVocabulary?name='
                                     'plone.app.vocabularies.Catalog'
                                     '&field=fieldname',
                    'basePath': '/Plone/doc',
                    'rootPath': '/',
                    'sort_on': 'sortable_title',
                    'sort_order': 'ascending',
                    'treeVocabularyUrl': '/@@getVocabulary?name='
                                         'plone.app.vocabularies.Catalog',
                },
            },
            widget._base_args(self.context, self.field, self.request),
        )
Exemplo n.º 5
0
    def test_single_value(self):
        from zope.event import notify
        from zope.interface import implements
        from zope.lifecycleevent import ObjectCreatedEvent
        from plone.uuid.interfaces import IUUID
        from plone.uuid.interfaces import IAttributeUUID
        from Products.Archetypes.Widget import RelatedItemsWidget

        class ExampleContent(object):
            implements(IAttributeUUID)

        obj1 = ExampleContent()
        notify(ObjectCreatedEvent(obj1))

        self.field.getName.return_value = 'fieldname'
        self.field.getAccessor.return_value = lambda: obj1
        self.field.multiValued = False
        self.context.portal_properties.site_properties\
            .getProperty.return_value = ['SomeType']

        widget = RelatedItemsWidget()

        self.assertEqual(
            {
                'name': 'fieldname',
                'value': '{}'.format(IUUID(obj1)),
                'pattern': 'relateditems',
                'pattern_options': {
                    'folderTypes': ['SomeType'],
                    'homeText': u'Home',
                    'separator': ';',
                    'orderable': True,
                    'searchAllText': u'Entire site',
                    'searchText': u'Search',
                    'maximumSelectionSize': 1,
                    'vocabularyUrl': '/@@getVocabulary?name='
                                     'plone.app.vocabularies.Catalog'
                                     '&field=fieldname',
                },
            },
            widget._base_args(self.context, self.field, self.request),
        )
Exemplo n.º 6
0
    def test_single_valued_empty(self):
        from Products.Archetypes.Widget import RelatedItemsWidget

        self.field.getName.return_value = 'fieldname'
        self.field.getAccessor.return_value = lambda: None
        self.field.multiValued = False

        widget = RelatedItemsWidget()
        base_args = widget._base_args(self.context, self.field, self.request)

        self.assertDictContainsSubset(
            {
                'name': 'fieldname',
                'value': '',
                'pattern': 'relateditems',
            }, base_args)

        self.assertDictContainsSubset(
            {
                'separator':
                ';',
                'orderable':
                True,
                'maximumSelectionSize':
                1,
                'vocabularyUrl':
                '/@@getVocabulary?name='
                'plone.app.vocabularies.Catalog'
                '&field=fieldname',
                'basePath':
                '/Plone/doc',
                'contextPath':
                '/Plone/doc',
                'rootPath':
                '/',
                'rootUrl':
                '',
            }, base_args.get('pattern_options', {}))