def test_multiple_widgets(self): from zope.event import notify from Products.Archetypes.Widget import RelatedItemsWidget from zope.interface import implementer from zope.lifecycleevent import ObjectCreatedEvent from plone.uuid.interfaces import IUUID from plone.uuid.interfaces import IAttributeUUID @implementer(IAttributeUUID) class ExampleContent(object): pass obj1 = ExampleContent() obj2 = ExampleContent() notify(ObjectCreatedEvent(obj1)) notify(ObjectCreatedEvent(obj2)) self.context.fieldvalue = lambda: obj1 field1 = ReferenceField( 'fieldname1', relationship="A", multiValued=False, widget=RelatedItemsWidget(), ) field1.accessor = "fieldvalue" base_args1 = field1.widget._base_args(self.context, field1, self.request) # noqa self.assertDictContainsSubset( { 'name': 'fieldname1', 'value': '{}'.format(IUUID(obj1)), 'pattern': 'relateditems', }, base_args1) self.assertDictContainsSubset( { 'separator': ';', 'orderable': True, 'maximumSelectionSize': 1, 'vocabularyUrl': '/@@getVocabulary?name=' 'plone.app.vocabularies.Catalog' '&field=fieldname1', 'basePath': '/Plone/doc', 'contextPath': '/Plone/doc', 'rootPath': '/', 'rootUrl': '', }, base_args1.get('pattern_options', {})) field2 = ReferenceField( 'fieldname2', relationship="A", multiValued=True, widget=RelatedItemsWidget(), ) field2.accessor = "fieldvalue" self.context.fieldvalue = lambda: [obj1, obj2] base_args2 = field2.widget._base_args(self.context, field2, self.request) # noqa self.assertDictContainsSubset( { 'name': 'fieldname2', 'value': '{};{}'.format(IUUID(obj1), IUUID(obj2)), 'pattern': 'relateditems', }, base_args2) self.assertDictContainsSubset( { 'separator': ';', 'orderable': True, 'maximumSelectionSize': -1, 'vocabularyUrl': '/@@getVocabulary?name=' 'plone.app.vocabularies.Catalog' '&field=fieldname2', 'basePath': '/Plone/doc', 'contextPath': '/Plone/doc', 'rootPath': '/', 'rootUrl': '', }, base_args2.get('pattern_options', {}))
def test_multiple_widgets(self): from zope.event import notify from Products.Archetypes.Widget import RelatedItemsWidget from zope.interface import implements from zope.lifecycleevent import ObjectCreatedEvent from plone.uuid.interfaces import IUUID from plone.uuid.interfaces import IAttributeUUID class ExampleContent(object): implements(IAttributeUUID) obj1 = ExampleContent() obj2 = ExampleContent() notify(ObjectCreatedEvent(obj1)) notify(ObjectCreatedEvent(obj2)) with mock.patch('plone.app.widgets.utils.getUtility') as mock_method: self.context.fieldvalue = lambda: obj1 field1 = ReferenceField( 'fieldname1', relationship="A", multiValued=False, widget=RelatedItemsWidget(), ) field1.accessor = "fieldvalue" self.assertEqual( { 'name': 'fieldname1', 'value': '{}'.format(IUUID(obj1)), '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=fieldname1', }, }, field1.widget._base_args(self.context, field1, self.request), ) field2 = ReferenceField( 'fieldname2', relationship="A", multiValued=True, widget=RelatedItemsWidget(), ) field2.accessor = "fieldvalue" self.context.fieldvalue = lambda: [obj1, obj2] self.assertEqual( { 'name': 'fieldname2', 'value': '{};{}'.format(IUUID(obj1), IUUID(obj2)), '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=fieldname2', }, }, field2.widget._base_args(self.context, field2, self.request), )