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
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
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
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)
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)
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() )
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())
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) )
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())
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)
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))
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_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))
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)