Beispiel #1
0
 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'])
Beispiel #2
0
    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,))
Beispiel #3
0
    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'])
Beispiel #4
0
    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, ))
Beispiel #5
0
    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))
Beispiel #6
0
    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]
Beispiel #7
0
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
Beispiel #9
0
    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'])
Beispiel #10
0
    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'])
Beispiel #11
0
    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))