コード例 #1
0
    def test_messages(self):
        """ test if the error messages are exported
        """
        form = ZMIForm("test", "<EncodingTest>")
        form.manage_addField("int_field", "int Field", "IntegerField")

        form2 = ZMIForm("test2", "ValueTest")
        request = FakeRequest()
        for message_key in form.int_field.get_error_names():
            request[message_key] = "test message for error key <%s>" % message_key
        form.int_field.manage_messages(REQUEST=request)

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

        request.clear()
        request["field_int_field"] = "not a number"

        try:
            form.validate_all(request)
            self.fail("form should fail in validation")
        except FormValidationError, e:
            self.assertEquals(1, len(e.errors))
            text1 = e.errors[0].error_text
コード例 #2
0
    def test_messages(self):
        """ test if the error messages are exported
        """
        form = ZMIForm('test', '<EncodingTest>')
        form.manage_addField('int_field', 'int Field', 'IntegerField')
        
        form2 = ZMIForm('test2', 'ValueTest')
        request = FakeRequest()
        for message_key in form.int_field.get_error_names():
           request[message_key] = 'test message for error key <%s>' % message_key
        form.int_field.manage_messages(REQUEST=request)
        
        
        xml = formToXML(form)
        XMLToForm(xml, form2)
        # print xml

        request.clear()
        request['field_int_field'] = 'not a number'

        try:
            form.validate_all(request)
            self.fail('form should fail in validation')
        except FormValidationError, e:
            self.assertEquals(1, len(e.errors))
            text1 = e.errors[0].error_text
コード例 #3
0
    def test_messages(self):
        """ test if the error messages are exported
        """
        form = ZMIForm('test', '<EncodingTest>')
        form.manage_addField('int_field', 'int Field', 'IntegerField')

        form2 = ZMIForm('test2', 'ValueTest')
        request = FakeRequest()
        for message_key in form.int_field.get_error_names():
            request[
                message_key] = 'test message for error key <%s>' % message_key
        form.int_field.manage_messages(REQUEST=request)

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

        request.clear()
        request['field_int_field'] = 'not a number'

        try:
            form.validate_all(request)
            self.fail('form should fail in validation')
        except FormValidationError, e:
            self.assertEqual(1, len(e.errors))
            text1 = e.errors[0].error_text
コード例 #4
0
    def test_serializeDateTimeValues(self):
        form = ZMIForm('test', 'DateTime')

        form.manage_addField('date_field', 'Date Field', 'DateTimeField')
        form.date_field.values['start_datetime'] = DateTime('2004/01/01 12:01:00')

        form2 = ZMIForm('test', 'DateTime2')

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

        self.assertEqualForms(form, form2)
コード例 #5
0
    def test_serializeDateTimeValues(self):
        form = ZMIForm('test', 'DateTime')

        form.manage_addField('date_field', 'Date Field', 'DateTimeField')
        form.date_field.values['start_datetime'] = DateTime(
            '2004/01/01 12:01:00')

        form2 = ZMIForm('test', 'DateTime2')

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

        self.assertEqualForms(form, form2)
コード例 #6
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() )
コード例 #7
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())
コード例 #8
0
    def test_fieldValueTypes(self):
        """ test checking if the field values are of the proper type.
        after reading from XML some field values may not have the right type,
        if they have a special type (currently int and "list").
        Also tests if rendering and validation are the same
        between the original form and the one after one form -> xml -> form
        roundtrip.
        """

        form = ZMIForm('test', 'ValueTest')
        form.manage_addField('int_field', 'Test Integer Field', 'IntegerField')
        form.manage_addField('float_field', 'Test Float Field', 'FloatField')
        form.manage_addField('date_field', 'Test Date Field', 'DateTimeField')
        form.manage_addField('list_field', 'Test List Field', 'ListField')
        form.manage_addField('multi_field', 'Test Checkbox Field', 'MultiCheckBoxField')
        form.manage_addField('link_field', 'Test Link Field', 'LinkField')
        form.manage_addField('empty_field', 'Test Empty Field', 'StringField')
        int_field   = getattr(form, 'int_field')
        float_field = getattr(form, 'float_field')
        date_field  = getattr(form, 'date_field')
        list_field  = getattr(form, 'list_field')
        multi_field = getattr(form, 'multi_field')
        link_field = getattr(form, 'link_field')
        empty_field = getattr(form, 'empty_field')

        # XXX editing fields by messing with a fake request
        # -- any better way to do this?
        default_values = {'field_title': 'Test Title',
                          'field_display_width': '92',
                          'field_required':'checked',
                          'field_enabled':'checked',
                          }
        try:
            request = FakeRequest()
            for key, sub_field in int_field.form.fields.iteritems():
              request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update( {'field_default':'42',
                             'field_enabled':'checked'})
            int_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in float_field.form.fields.iteritems():
              request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update( {'field_default':'1.7',
                             'field_input_style':'-1234.5'})
            float_field.manage_edit(REQUEST=request)

            # XXX cannot test "defaults to now", as this may fail randomly
            request.clear()
            for key, sub_field in date_field.form.fields.iteritems():
              request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update( {'field_input_style': 'list',
                             'field_input_order': 'mdy',
                             'field_date_only': '',
                             'field_css_class': 'test_css',
                             'field_time_separator': '$',
                             'subfield_field_default_year': '',
                             'subfield_field_default_month': '',
                             'subfield_field_default_day': '',
                             'subfield_field_default_hour': '',
                             'subfield_field_default_minute': '',
                             'subfield_field_start_datetime_year': '',
                             'subfield_field_start_datetime_month': '',
                             'subfield_field_start_datetime_day': '',
                             'subfield_field_start_datetime_hour': '',
                             'subfield_field_start_datetime_minute': '',
                             'subfield_field_end_datetime_year': '',
                             'subfield_field_end_datetime_month': '',
                             'subfield_field_end_datetime_day': '',
                             'subfield_field_end_datetime_hour': '',
                             'subfield_field_end_datetime_minute': '',
                          })
            date_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in list_field.form.fields.iteritems():
              request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update( {'field_default':'foo',
                             'field_size':'1',
                             'field_items':'Foo | foo\n Bar | bar'})
            list_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in multi_field.form.fields.iteritems():
              request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update( {'field_default':'foo',
                             'field_size':'3',
                             'field_items':'Foo | foo\n Bar | bar\nBaz | baz',
                             'field_orientation':'horizontal',
                             'field_view_separator':'<br />\n',
                             })
            multi_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in link_field.form.fields.iteritems():
              request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update( {'field_default':'http://www.absurd.org',
                             'field_required':'1',
                             'field_check_timeout':'5.0',
                             'field_link_type':'external',
                             })
            link_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in empty_field.form.fields.iteritems():
              request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            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) )
コード例 #9
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.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())
コード例 #10
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)

        self.assertEqualForms(form, form2)
コード例 #11
0
    def test_fieldValueTypes(self):
        """ test checking if the field values are of the proper type.
        after reading from XML some field values may not have the right type,
        if they have a special type (currently int and "list").
        Also tests if rendering and validation are the same
        between the original form and the one after one form -> xml -> form
        roundtrip.
        """

        form = ZMIForm('test', 'ValueTest')
        form.manage_addField('int_field', 'Test Integer Field', 'IntegerField')
        form.manage_addField('float_field', 'Test Float Field', 'FloatField')
        form.manage_addField('date_field', 'Test Date Field', 'DateTimeField')
        form.manage_addField('list_field', 'Test List Field', 'ListField')
        form.manage_addField('multi_field', 'Test Checkbox Field',
                             'MultiCheckBoxField')
        form.manage_addField('link_field', 'Test Link Field', 'LinkField')
        form.manage_addField('empty_field', 'Test Empty Field', 'StringField')
        int_field = getattr(form, 'int_field')
        float_field = getattr(form, 'float_field')
        date_field = getattr(form, 'date_field')
        list_field = getattr(form, 'list_field')
        multi_field = getattr(form, 'multi_field')
        link_field = getattr(form, 'link_field')
        empty_field = getattr(form, 'empty_field')

        # XXX editing fields by messing with a fake request
        # -- any better way to do this?
        default_values = {
            'field_title': 'Test Title',
            'field_display_width': '92',
            'field_required': 'checked',
            'field_enabled': 'checked',
        }
        try:
            request = FakeRequest()
            for key, sub_field in int_field.form.fields.iteritems():
                request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({'field_default': '42', 'field_enabled': 'checked'})
            int_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in float_field.form.fields.iteritems():
                request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({
                'field_default': '1.7',
                'field_input_style': '-1234.5'
            })
            float_field.manage_edit(REQUEST=request)

            # XXX cannot test "defaults to now", as this may fail randomly
            request.clear()
            for key, sub_field in date_field.form.fields.iteritems():
                request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({
                'field_input_style': 'list',
                'field_input_order': 'mdy',
                'field_date_only': '',
                'field_css_class': 'test_css',
                'field_time_separator': '$',
                'subfield_field_default_year': '',
                'subfield_field_default_month': '',
                'subfield_field_default_day': '',
                'subfield_field_default_hour': '',
                'subfield_field_default_minute': '',
                'subfield_field_start_datetime_year': '',
                'subfield_field_start_datetime_month': '',
                'subfield_field_start_datetime_day': '',
                'subfield_field_start_datetime_hour': '',
                'subfield_field_start_datetime_minute': '',
                'subfield_field_end_datetime_year': '',
                'subfield_field_end_datetime_month': '',
                'subfield_field_end_datetime_day': '',
                'subfield_field_end_datetime_hour': '',
                'subfield_field_end_datetime_minute': '',
            })
            date_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in list_field.form.fields.iteritems():
                request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({
                'field_default': 'foo',
                'field_size': '1',
                'field_items': 'Foo | foo\n Bar | bar'
            })
            list_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in multi_field.form.fields.iteritems():
                request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({
                'field_default': 'foo',
                'field_size': '3',
                'field_items': 'Foo | foo\n Bar | bar\nBaz | baz',
                'field_orientation': 'horizontal',
                'field_view_separator': '<br />\n',
            })
            multi_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in link_field.form.fields.iteritems():
                request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({
                'field_default': 'http://www.absurd.org',
                'field_required': '1',
                'field_check_timeout': '5.0',
                'field_link_type': 'external',
            })
            link_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in empty_field.form.fields.iteritems():
                request['field_%s' % key] = sub_field.render_pdf()
            request.update(default_values)
            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))
コード例 #12
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())
コード例 #13
0
    def test_fieldValueTypes(self):
        """ test checking if the field values are of the proper type.
        after reading from XML some field values may not have the right type,
        if they have a special type (currently int and "list").
        Also tests if rendering and validation are the same
        between the original form and the one after one form -> xml -> form
        roundtrip.
        """

        form = ZMIForm("test", "ValueTest")
        form.manage_addField("int_field", "Test Integer Field", "IntegerField")
        form.manage_addField("float_field", "Test Float Field", "FloatField")
        form.manage_addField("date_field", "Test Date Field", "DateTimeField")
        form.manage_addField("list_field", "Test List Field", "ListField")
        form.manage_addField("multi_field", "Test Checkbox Field", "MultiCheckBoxField")
        form.manage_addField("link_field", "Test Link Field", "LinkField")
        form.manage_addField("empty_field", "Test Empty Field", "StringField")
        int_field = getattr(form, "int_field")
        float_field = getattr(form, "float_field")
        date_field = getattr(form, "date_field")
        list_field = getattr(form, "list_field")
        multi_field = getattr(form, "multi_field")
        link_field = getattr(form, "link_field")
        empty_field = getattr(form, "empty_field")

        # XXX editing fields by messing with a fake request
        # -- any better way to do this?
        default_values = {
            "field_title": "Test Title",
            "field_display_width": "92",
            "field_required": "checked",
            "field_enabled": "checked",
        }
        try:
            request = FakeRequest()
            for key, sub_field in int_field.form.fields.iteritems():
                request["field_%s" % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({"field_default": "42", "field_enabled": "checked"})
            int_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in float_field.form.fields.iteritems():
                request["field_%s" % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({"field_default": "1.7", "field_input_style": "-1234.5"})
            float_field.manage_edit(REQUEST=request)

            # XXX cannot test "defaults to now", as this may fail randomly
            request.clear()
            for key, sub_field in date_field.form.fields.iteritems():
                request["field_%s" % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update(
                {
                    "field_input_style": "list",
                    "field_input_order": "mdy",
                    "field_date_only": "",
                    "field_css_class": "test_css",
                    "field_time_separator": "$",
                    "subfield_field_default_year": "",
                    "subfield_field_default_month": "",
                    "subfield_field_default_day": "",
                    "subfield_field_default_hour": "",
                    "subfield_field_default_minute": "",
                    "subfield_field_start_datetime_year": "",
                    "subfield_field_start_datetime_month": "",
                    "subfield_field_start_datetime_day": "",
                    "subfield_field_start_datetime_hour": "",
                    "subfield_field_start_datetime_minute": "",
                    "subfield_field_end_datetime_year": "",
                    "subfield_field_end_datetime_month": "",
                    "subfield_field_end_datetime_day": "",
                    "subfield_field_end_datetime_hour": "",
                    "subfield_field_end_datetime_minute": "",
                }
            )
            date_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in list_field.form.fields.iteritems():
                request["field_%s" % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update({"field_default": "foo", "field_size": "1", "field_items": "Foo | foo\n Bar | bar"})
            list_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in multi_field.form.fields.iteritems():
                request["field_%s" % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update(
                {
                    "field_default": "foo",
                    "field_size": "3",
                    "field_items": "Foo | foo\n Bar | bar\nBaz | baz",
                    "field_orientation": "horizontal",
                    "field_view_separator": "<br />\n",
                }
            )
            multi_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in link_field.form.fields.iteritems():
                request["field_%s" % key] = sub_field.render_pdf()
            request.update(default_values)
            request.update(
                {
                    "field_default": "http://www.absurd.org",
                    "field_required": "1",
                    "field_check_timeout": "5.0",
                    "field_link_type": "external",
                }
            )
            link_field.manage_edit(REQUEST=request)

            request.clear()
            for key, sub_field in empty_field.form.fields.iteritems():
                request["field_%s" % key] = sub_field.render_pdf()
            request.update(default_values)
            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))
コード例 #14
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)

        self.assertEqualForms(form, form2)