def test_deserializeFlushesOldFields(self):
        # test that deserializing a form removes old values which
        # have been defined on that from previously
        # this may be an issue if one edits a form directly
        # via the ZMI "XML" tab; removing a field in the XML did not
        # remove that field from the form contents
        form = ZMIForm('test', 'Source')
        form2 = ZMIForm('test2', 'Target')

        form.manage_addField('date_field', 'Date Field', 'DateTimeField')
        form2.manage_addField('another_field', 'String Field', 'StringField')

        xml = formToXML(form)
        XMLToForm(xml, form2)

        self.assertEqualForms(form, form2)
        self.failIf( form2.has_field('another_field') )
        self.failIf('another_field' in form2.objectIds() )
示例#2
0
    def test_deserializeFlushesOldFields(self):
        # test that deserializing a form removes old values which
        # have been defined on that from previously
        # this may be an issue if one edits a form directly
        # via the ZMI "XML" tab; removing a field in the XML did not
        # remove that field from the form contents
        form = ZMIForm('test', 'Source')
        form2 = ZMIForm('test2', 'Target')

        form.manage_addField('date_field', 'Date Field', 'DateTimeField')
        form2.manage_addField('another_field', 'String Field', 'StringField')

        xml = formToXML(form)
        XMLToForm(xml, form2)

        self.assertEqualForms(form, form2)
        self.failIf(form2.has_field('another_field'))
        self.failIf('another_field' in form2.objectIds())
示例#3
0
    def test_escaping(self):
        """ test if the necessary elements are escaped in the XML.
        (Actually this test is very incomplete)
        """
        form = ZMIForm('test', '<EncodingTest>')
        # XXX don't test escaping of name, as needs to be javascript
        # valid anyway?
        form.name = 'name'
        form.add_group('a & b')

        form.manage_addField('string_field', '<string> Field', 'StringField')
        form.manage_addField('int_field', '<int> Field', 'IntegerField')
        form.manage_addField('float_field', '<Float> Field', 'FloatField')
        form.manage_addField('date_field', '<Date> Field', 'DateTimeField')
        form.manage_addField('list_field', '<List> Field', 'ListField')
        form.manage_addField('multi_field', '<Checkbox> Field',
                             'MultiCheckBoxField')

        form2 = ZMIForm('test2', 'ValueTest')

        xml = formToXML(form)
        XMLToForm(xml, form2)

        for field in form.get_fields():
            self.assert_(form2.has_field(field.getId()))
            field2 = getattr(form2, field.getId())
            # XXX test if values are the same
            self.assertEqual(field.values, field2.values)
            # test if default renderings are the same
            self.assertEqual(field.render(), field2.render())

        self.assertEqual(form.title, form2.title)
        self.assertEqual(form.name, form2.name)
        self.assertEqual(form.action, form2.action)
        self.assertEqual(form.enctype, form2.enctype)
        self.assertEqual(form.method, form2.method)

        # if we have forgotten something, this will usually remind us ;-)
        self.assertEqual(form.render(), form2.render())
    def test_escaping(self):
        """ test if the necessary elements are escaped in the XML.
        (Actually this test is very incomplete)
        """
        form = ZMIForm('test', '<EncodingTest>')
        # XXX don't test escaping of name, as needs to be javascript
        # valid anyway?
        form.name = 'name'
        form.add_group('a & b')

        form.manage_addField('string_field', '<string> Field', 'StringField')
        form.manage_addField('int_field', '<int> Field', 'IntegerField')
        form.manage_addField('float_field', '<Float> Field', 'FloatField')
        form.manage_addField('date_field', '<Date> Field', 'DateTimeField')
        form.manage_addField('list_field', '<List> Field', 'ListField')
        form.manage_addField('multi_field', '<Checkbox> Field', 'MultiCheckBoxField')

        form2 = ZMIForm('test2', 'ValueTest')

        xml = formToXML(form)
        XMLToForm(xml, form2)

        for field in form.get_fields():
            self.assert_(form2.has_field(field.getId()))
            field2 = getattr(form2, field.getId())
            # XXX test if values are the same
            self.assertEquals(field.values, field2.values)
            # test if default renderings are the same
            self.assertEquals(field.render(), field2.render())

        self.assertEquals(form.title, form2.title)
        self.assertEquals(form.name, form2.name)
        self.assertEquals(form.action, form2.action)
        self.assertEquals(form.enctype, form2.enctype)
        self.assertEquals(form.method, form2.method)

        # if we have forgotten something, this will usually remind us ;-)
        self.assertEquals(form.render(), form2.render())
            request.update( {'field_default':'None',
                             'field_required':'',
                             })
            empty_field.manage_edit(REQUEST=request)

        except ValidationError, e:
            self.fail('error when editing field %s; error message: %s' %
                       (e.field_id, e.error_text) )

        form2 = ZMIForm('test2', 'ValueTest')

        xml = formToXML(form)
        XMLToForm(xml, form2)

        for field in form.get_fields():
            self.assert_(form2.has_field(field.getId()))
            field2 = getattr(form2, field.getId())

            # XXX In Formulator, None and '' are treated as nearly
            # being identical, and validators often turn '' to None.
            # So there may be false positive, if we compare the values
            # naively.
            message = 'the values of %r and %r are different: %r != %r' \
                    % (field, field2, field.values, field2.values)
            self.assertEquals(sorted(field.values.iterkeys()),
                    sorted(field2.values.keys()),
                    message)

            def compare(a, b):
                if a is None:
                    a = ''
示例#6
0
                'field_default': 'None',
                'field_required': '',
            })
            empty_field.manage_edit(REQUEST=request)

        except ValidationError, e:
            self.fail('error when editing field %s; error message: %s' %
                      (e.field_id, e.error_text))

        form2 = ZMIForm('test2', 'ValueTest')

        xml = formToXML(form)
        XMLToForm(xml, form2)

        for field in form.get_fields():
            self.assert_(form2.has_field(field.getId()))
            field2 = getattr(form2, field.getId())

            # XXX In Formulator, None and '' are treated as nearly
            # being identical, and validators often turn '' to None.
            # So there may be false positive, if we compare the values
            # naively.
            message = 'the values of %r and %r are different: %r != %r' \
                    % (field, field2, field.values, field2.values)
            self.assertEqual(sorted(field.values.iterkeys()),
                             sorted(field2.values.keys()), message)

            def compare(a, b):
                if a is None:
                    a = ''
                if b is None: