def test_label(self): # Edit view should take its label from the FTI title # Context and request context_mock = self.create_dummy(portal_type=u'testtype') request_mock = TestRequest() # FTI fti_mock = self.mocker.proxy(DexterityFTI(u"testtype")) self.expect(fti_mock.Title()).result(u"Test title") self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") # Form self.replay() editview = DefaultEditForm(context_mock, request_mock) # emulate update() editview.portal_type = u"testtype" label = editview.label self.assertEquals(u"Edit ${name}", unicode(label)) self.assertEquals(u"Test title", label.mapping['name'])
def test_schema_lookup(self): # Context and request context_mock = self.create_dummy(portal_type=u'testtype') request_mock = TestRequest() # FTI fti_mock = self.mocker.proxy(DexterityFTI(u"testtype")) self.expect(fti_mock.lookupSchema()).result(ISchema) self.expect(fti_mock.behaviors).result((IBehaviorOne.__identifier__, IBehaviorTwo.__identifier__, IBehaviorThree.__identifier__)) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") # Form self.replay() view = DefaultEditForm(context_mock, request_mock) # emulate update() view.portal_type = u"testtype" self.assertEquals(ISchema, view.schema) self.assertEquals([IBehaviorOne, IBehaviorTwo], list(view.additionalSchemata,)) # When we register our own IBehaviorAssignable we can # influence what goes into the additionalSchemata: provideAdapter(NoBehaviorAssignable) self.assertEquals([], list(view.additionalSchemata,))
def test_label(self): # Edit view should take its label from the FTI title # Context and request context_mock = self.create_dummy(portal_type=u'testtype') request_mock = TestRequest() # FTI fti_mock = self.mocker.proxy(DexterityFTI(u"testtype")) self.expect(fti_mock.Title()).result(u"Test title") self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") # Form self.replay() editview = DefaultEditForm(context_mock, request_mock) # emulate update() editview.portal_type = u"testtype" label = editview.label self.assertEqual(u"Edit ${name}", unicode(label)) self.assertEqual(u"Test title", label.mapping['name'])
def test_schema_lookup(self): # Context and request context_mock = self.create_dummy(portal_type=u'testtype') request_mock = TestRequest() # FTI fti_mock = self.mocker.proxy(DexterityFTI(u"testtype")) self.expect(fti_mock.lookupSchema()).result(ISchema) self.expect(fti_mock.behaviors).result( (IBehaviorOne.__identifier__, IBehaviorTwo.__identifier__, IBehaviorThree.__identifier__)) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") # Form self.replay() view = DefaultEditForm(context_mock, request_mock) # emulate update() view.portal_type = u"testtype" self.assertEqual(ISchema, view.schema) self.assertEqual([IBehaviorOne, IBehaviorTwo], list(view.additionalSchemata, )) # When we register our own IBehaviorAssignable we can # influence what goes into the additionalSchemata: provideAdapter(NoBehaviorAssignable) self.assertEqual([], list(view.additionalSchemata, ))
def test_schema_lookup_edit(self): # Context and request class IMarker(IDexterityContent): pass context_mock = self.create_dummy(portal_type=u'testtype') alsoProvides(context_mock, IMarker) request_mock = TestRequest() # FTI fti_mock = DexterityFTI(u"testtype") fti_mock.lookupSchema = Mock(return_value=ISchema) fti_mock.behaviors = (IBehaviorOne.__identifier__, IBehaviorTwo.__identifier__, IBehaviorThree.__identifier__) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") from plone.behavior.interfaces import IBehavior from plone.behavior.registration import BehaviorRegistration registration = BehaviorRegistration( title=u"Test Behavior 1", description=u"Provides test behavior", interface=IBehaviorOne, marker=None, factory=None) self.mock_utility(registration, IBehavior, IBehaviorOne.__identifier__) registration = BehaviorRegistration( title=u"Test Behavior 2", description=u"Provides test behavior", interface=IBehaviorTwo, marker=None, factory=None) self.mock_utility(registration, IBehavior, IBehaviorTwo.__identifier__) registration = BehaviorRegistration( title=u"Test Behavior 3", description=u"Provides test behavior", interface=IBehaviorThree, marker=None, factory=None) self.mock_utility(registration, IBehavior, IBehaviorThree.__identifier__) # Form view = DefaultEditForm(context_mock, request_mock) view.portal_type = u"testtype" self.assertEqual(ISchema, view.schema) # we expect here only formfieldprovider! self.assertEqual((IBehaviorOne, IBehaviorTwo), tuple(view.additionalSchemata)) # When we register our own IBehaviorAssignable we can # influence what goes into the additionalSchemata. self.mock_adapter(NoBehaviorAssignable, IBehaviorAssignable, [IMarker]) additionalSchemata = tuple(view.additionalSchemata) self.assertEqual(tuple(), tuple(additionalSchemata))
def _compute_fields_order(self, obj): """ Given a content, compute the field ordering the way the edit form does. Return: a list of tuples (field, field name) in order. """ form = DefaultEditForm(obj, getRequest()) form.portal_type = obj.portal_type form.updateFields() return [(form.fields[name].field, name) for name in form.fields]
def patched_compute_fields_order(self, obj): form = DefaultEditForm(obj, getRequest()) form.portal_type = obj.portal_type form.updateFields() all_fields = list() all_fields += [(form.fields[name].field, name) for name in form.fields] if form.groups: for group in form.groups: all_fields += [(group.fields[name].field, name) for name in group.fields] return all_fields
def _compute_fields_order(self, obj): """ Given a content, compute the field ordering the way the edit form does. Return: a list of tuples (field, field name) in order. """ form = DefaultEditForm(obj, getRequest()) form.portal_type = obj.portal_type form.updateFields() all_fields = list() all_fields += [(form.fields[name].field, name) for name in form.fields] if form.groups: for group in form.groups: all_fields += [(group.fields[name].field, name) for name in group.fields] return all_fields
def test_label(self): # Edit view should take its label from the FTI title # Context and request context_mock = self.create_dummy(portal_type=u'testtype') request_mock = TestRequest() # FTI fti_mock = DexterityFTI(u"testtype") fti_mock.Title = Mock(return_value=u'Test title') self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") # Form editview = DefaultEditForm(context_mock, request_mock) # emulate update() editview.portal_type = u"testtype" label = editview.label self.assertEqual(u"Edit ${name}", six.text_type(label)) self.assertEqual(u"Test title", label.mapping['name'])
def test_label(self): # Edit view should take its label from the FTI title # Context and request context_mock = self.create_dummy(portal_type=u'testtype') request_mock = TestRequest() # FTI fti_mock = DexterityFTI(u"testtype") fti_mock.Title = Mock(return_value=u'Test title') self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") # Form editview = DefaultEditForm(context_mock, request_mock) # emulate update() editview.portal_type = u"testtype" label = editview.label self.assertEqual(u"Edit ${name}", six.text_type(label)) self.assertEqual(u"Test title", label.mapping['name'])
def test_schema_lookup_edit(self): # Context and request class IMarker(IDexterityContent): pass context_mock = self.create_dummy(portal_type=u'testtype') alsoProvides(context_mock, IMarker) request_mock = TestRequest() # FTI fti_mock = DexterityFTI(u"testtype") fti_mock.lookupSchema = Mock(return_value=ISchema) fti_mock.behaviors = ( IBehaviorOne.__identifier__, IBehaviorTwo.__identifier__, IBehaviorThree.__identifier__ ) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") from plone.behavior.interfaces import IBehavior from plone.behavior.registration import BehaviorRegistration registration = BehaviorRegistration( title=u"Test Behavior 1", description=u"Provides test behavior", interface=IBehaviorOne, marker=None, factory=None ) self.mock_utility( registration, IBehavior, IBehaviorOne.__identifier__ ) registration = BehaviorRegistration( title=u"Test Behavior 2", description=u"Provides test behavior", interface=IBehaviorTwo, marker=None, factory=None ) self.mock_utility( registration, IBehavior, IBehaviorTwo.__identifier__ ) registration = BehaviorRegistration( title=u"Test Behavior 3", description=u"Provides test behavior", interface=IBehaviorThree, marker=None, factory=None ) self.mock_utility( registration, IBehavior, IBehaviorThree.__identifier__ ) # Form view = DefaultEditForm(context_mock, request_mock) view.portal_type = u"testtype" self.assertEqual(ISchema, view.schema) # we expect here only formfieldprovider! self.assertEqual( (IBehaviorOne, IBehaviorTwo), tuple(view.additionalSchemata) ) # When we register our own IBehaviorAssignable we can # influence what goes into the additionalSchemata. self.mock_adapter( NoBehaviorAssignable, IBehaviorAssignable, [IMarker] ) additionalSchemata = tuple(view.additionalSchemata) self.assertEqual(tuple(), tuple(additionalSchemata))