[Erp5-report] r26941 - /erp5/trunk/products/Formulator/tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Tue May 12 17:15:00 CEST 2009


Author: nicolas
Date: Tue May 12 17:14:59 2009
New Revision: 26941

URL: http://svn.erp5.org?rev=26941&view=rev
Log:
rename Tests

Added:
    erp5/trunk/products/Formulator/tests/testForm.py
      - copied unchanged from r26936, erp5/trunk/products/Formulator/tests/test_Form.py
    erp5/trunk/products/Formulator/tests/testFormValidator.py
      - copied unchanged from r26936, erp5/trunk/products/Formulator/tests/test_validators.py
    erp5/trunk/products/Formulator/tests/testSerializeForm.py
      - copied unchanged from r26936, erp5/trunk/products/Formulator/tests/test_serialize.py
Removed:
    erp5/trunk/products/Formulator/tests/test_Form.py
    erp5/trunk/products/Formulator/tests/test_serialize.py
    erp5/trunk/products/Formulator/tests/test_validators.py

Removed: erp5/trunk/products/Formulator/tests/test_Form.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/tests/test_Form.py?rev=26940&view=auto
==============================================================================
--- erp5/trunk/products/Formulator/tests/test_Form.py [utf8] (original)
+++ erp5/trunk/products/Formulator/tests/test_Form.py (removed)
@@ -1,179 +1,0 @@
-# -*- coding: utf-8 -*-
-import unittest, re
-import Zope2
-
-# XXX this does not work for zope2.x if x < 3
-# can we fake this? should we do this?
-from Testing import makerequest
-
-from Products.Formulator.Form import ZMIForm
-from Products.Formulator.Errors import ValidationError, FormValidationError
-from Products.Formulator.MethodField import Method
-from Products.Formulator.TALESField import TALESMethod
-
-from Products.PythonScripts.PythonScript import PythonScript
-
-import transaction
-from Testing import ZopeTestCase
-ZopeTestCase.installProduct('Formulator')
-
-""" random assembly testing some reported bugs.
-    This is _not_ a structured or even complete test suite
-"""
-
-class FormTestCase(unittest.TestCase):
-
-    def setUp(self):
-        transaction.begin()
-        self.connection = Zope2.DB.open()
-        self.root = makerequest.makerequest(
-            self.connection.root()['Application'])
-
-        self.root.manage_addProduct['Formulator'] \
-                 .manage_add('form', 'Test Form')
-        self.form = self.root.form
-
-
-    def tearDown(self):
-        transaction.abort()
-        self.connection.close()
-        
-
-    def test_has_field(self):
-        """ test if has_field works, if one asks for a non-field attribute.
-            this has raised AttributeError "aq_explicit" in previous versions
-        """
-        self.failIf(self.form.has_field('title'))
-
-    def _test_list_values(self):
-        """ test if a list of values returned by TALES (override) expressions
-        is interpreted properly.
-        If a TALES tab returns a sequence of items and some item is
-        actually a string of length 2 (e.g. "ok"), this previously
-        has lead to a item text of 'o' and a display value of 'k'
-        (as the this is actually a sequence of length 2 ...)
-         See http://sourceforge.net/mailarchive/forum.php?thread_id=1359918&forum_id=1702
-         
-        Actually the original problem still does not work,
-        as passing a list of int's is not yet supported.
-        If it should, please uncomment the second part of the test.
-        """
-
-        # XXX deactivated: this maybe should not be fixed at all
-
-        self.form.manage_addField('list_field', 'Test List Field', 'ListField')
-
-        # adding a python script to be called by the override tab
-        # FIXME: the following does not work, as the fake-request
-        # does not have a "form" atribute (?)
-        #self.root.manage_addProduct['PythonScripts'] \
-        #         .manage_addPythonScript('override_test', 'Test for override')
-        #
-        #self.root._getOb('override_test').write("return ['ok', 'no']\n")
-
-        self.form.override_test = PythonScript('override_test')
-        self.form.override_test.write("return ['ok', 'no']\n")
-        # ps._makeFunction()
-
-        
-        list_field = getattr(self.form, 'list_field')
-        list_field.values['items'] = [ ('ok', 'ok'), ('no', 'no') ]
-
-        items1 = list_field.render()
-
-        # test TALES
-        list_field.tales['items'] = TALESMethod("python:['ok', 'no']")
-        items2 = list_field.render()
-
-        self.assertEquals(items1, items2)
-
-        # test override
-        del list_field.tales['items']
-        list_field.overrides['items'] = Method('override_test')
-        items2 = list_field.render()
-        
-        self.assertEquals(items1, items2)
-        
-        # test if TALES returns a list of e.g. int
-        #list_field.values['items'] = [ ('42', '42'), ('88', '88') ]
-        #
-        #items1 = list_field.render()
-        #
-        #list_field.tales['items'] = TALESMethod("python:[42, 88]")
-        #items2 = list_field.render()
-        #
-        #self.assertEquals(items1, items2)
-
-    def test_labels(self):
-        self.form.manage_addField(
-            'label_field', 'Test Label Field', 'LabelField')
-
-        self.form.label_field.overrides['default'] = "Some label"
-
-        self.form.manage_addField(
-            'int_field', 'Test integer field', 'IntegerField')
-
-        result = self.form.validate_all(
-            {'field_int_field': '3'})
-        self.assertEquals({'int_field': 3}, result)
-
-
-    def test_datetime_css_class_rendering(self):
-        # test that a bug is fixed, which causing the css_class value
-        # not to be rendered
-        
-        self.form.manage_addProduct['Formulator']\
-                 .manage_addField('date_time','Test Field','DateTimeField')
-        field = self.form.date_time
-        
-        css_matcher = re.compile('class="([^"]*)"')
-
-        # initially no css class is set
-        self.assertEquals(0, len(css_matcher.findall(field.render())))
-
-        # edit the field, bypassing validation ... 
-        field._edit({'css_class':'some_class'})
-
-        # now we should have five matches for the five subfields ...
-        css_matches = css_matcher.findall(field.render())
-        self.assertEquals(5, len(css_matches))
-        # ... and all have the given value:
-        for m in css_matches:
-            self.assertEquals('some_class',m)
-
-        # change the input style: the css needs to be
-        # propagated to the newly created subfields
-        current_style = field['input_style']
-        other_style = {'list':'text', 'text':'list'} [current_style]
-        field._edit({'input_style':other_style})
-        
-        # still the css classes should remain the same
-        css_matches = css_matcher.findall(field.render())
-        self.assertEquals(5, len(css_matches))
-        for m in css_matches:
-            self.assertEquals('some_class',m)
-
-        # now just change to another value:
-        field._edit({'css_class':'other_class'})
-        css_matches = css_matcher.findall(field.render())
-        self.assertEquals(5, len(css_matches))
-        for m in css_matches:
-            self.assertEquals('other_class',m)           
-
-        # and clear the css_class field:
-        field._edit({'css_class':''})
-        css_matches = css_matcher.findall(field.render())
-        self.assertEquals(0, len(css_matches))
-
-
-def test_suite():
-    suite = unittest.TestSuite()
-
-    suite.addTest(unittest.makeSuite(FormTestCase, 'test'))
-    return suite
-
-def main():
-    unittest.TextTestRunner().run(test_suite())
-
-if __name__ == '__main__':
-    main()

Removed: erp5/trunk/products/Formulator/tests/test_serialize.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/tests/test_serialize.py?rev=26940&view=auto
==============================================================================
--- erp5/trunk/products/Formulator/tests/test_serialize.py [utf8] (original)
+++ erp5/trunk/products/Formulator/tests/test_serialize.py (removed)
@@ -1,431 +1,0 @@
-# -*- coding: utf-8 -*-
-import unittest
-
-from Products.Formulator.Form import ZMIForm
-from Products.Formulator.XMLToForm import XMLToForm
-from Products.Formulator.FormToXML import formToXML
-
-from Products.Formulator.Errors import ValidationError, FormValidationError
-from Testing import ZopeTestCase
-ZopeTestCase.installProduct('Formulator')
-
-class FakeRequest:
-    """ a fake request for testing.
-    Actually we need this only for item acces,
-    and for evaluating to false always, for
-    the manage_XXX methods to not try to render
-    a response.
-    """
-
-    def __init__(self):
-        self.dict = {}
-
-    def __getitem__(self, key):
-        return self.dict[key]
-
-    def __setitem__(self, key, value):
-        self.dict[key] = value
-
-    def get(self, key, default_value=None):
-        return self.dict.get(key, default_value)
-
-    def update(self, other_dict):
-        self.dict.update(other_dict)
-
-    def clear(self):
-        self.dict.clear()
-
-    def __nonzero__(self):
-        return 0
-
-class SerializeTestCase(unittest.TestCase):
-    def test_simpleSerialize(self):
-        form = ZMIForm('test', 'My test')
-        xml = '''\
-<?xml version="1.0" encoding="iso-8859-1" ?>
-
-<form>
-  <title></title>
-  <name>tab_status_form</name>
-  <action></action>
-  <enctype></enctype>
-  <method></method>
-
-  <groups>
-    <group>
-      <title>Default</title>
-      <fields>
-
-      <field><id>message</id> <type>RawTextAreaField</type>
-        <values>
-          <alternate_name></alternate_name>
-          <hidden type="int">0</hidden>
-          <max_length></max_length>
-          <width type="int">65</width>
-          <external_validator></external_validator>
-          <height type="int">7</height>
-          <required type="int">0</required>
-          <css_class></css_class>
-          <default></default>
-          <title>Message</title>
-          <truncate type="int">0</truncate>
-          <description></description>
-          <extra>wrap="soft"</extra>
-        </values>
-        <tales>
-        </tales>
-      </field>
-      <field><id>publish_datetime</id> <type>DateTimeField</type>
-        <values>
-          <date_only type="int">0</date_only>
-          <alternate_name></alternate_name>
-          <input_style>list</input_style>
-          <hidden type="int">0</hidden>
-          <input_order>dmy</input_order>
-          <time_separator>:</time_separator>
-          <date_separator>/</date_separator>
-          <external_validator></external_validator>
-          <required type="int">0</required>
-          <default_now type="int">0</default_now>
-          <css_class></css_class>
-          <title>Publish time</title>
-          <description></description>
-        </values>
-        <tales>
-          <time_separator>python:form.time_punctuation</time_separator>
-          <date_separator>python:form.date_punctuation</date_separator>
-        </tales>
-      </field>
-      <field><id>expiration_datetime</id> <type>DateTimeField</type>
-        <values>
-          <date_only type="int">0</date_only>
-          <alternate_name></alternate_name>
-          <input_style>list</input_style>
-          <css_class></css_class>
-          <hidden type="int">0</hidden>
-          <input_order>dmy</input_order>
-          <time_separator>:</time_separator>
-          <date_separator>/</date_separator>
-          <external_validator></external_validator>
-          <required type="int">0</required>
-          <default_now type="int">0</default_now>
-          <title>Expiration time</title>
-          <description>If this document should expire, set the time.</description>
-        </values>
-        <tales>
-          <time_separator>python:form.time_punctuation</time_separator>
-          <date_separator>python:form.date_punctuation</date_separator>
-        </tales>
-      </field>
-      <field><id>expires_flag</id> <type>CheckBoxField</type>
-        <values>
-          <alternate_name></alternate_name>
-          <hidden type="int">0</hidden>
-          <css_class></css_class>
-          <default type="int">0</default>
-          <title>Expire flag</title>
-          <description>Turn on expiration time?</description>
-          <external_validator></external_validator>
-          <extra></extra>
-        </values>
-        <tales>
-        </tales>
-      </field>
-      </fields>
-    </group>
-  </groups>
-</form>'''
-        XMLToForm(xml, form)
-        s = formToXML(form)
-        f = open('output1.txt', 'w')
-        f.write(s)
-        f.close()
-        form2 = ZMIForm('another', 'Something')
-        XMLToForm(xml, form2)
-        f = open('output2.txt', 'w')
-        f.write(formToXML(form2))
-        f.close()
-
-
-    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_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
-
-        try:
-            form2.validate_all(request)
-            self.fail('form2 should fail in validation')
-        except FormValidationError, e:
-            self.assertEquals(1, len(e.errors))
-            text2 = e.errors[0].error_text
-
-        self.assertEquals(text1, text2)
-
-
-    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) )
-
-        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())
-
-        # brute force compare ...
-        self.assertEquals(form.render(), form2.render())
-        request.clear()
-        request['field_int_field'] = '42'
-        request['field_float_field'] = '2.71828'
-        request['subfield_field_date_field_month'] = '11'
-        request['subfield_field_date_field_day'] = '11'
-        request['subfield_field_date_field_year'] = '2011'
-        request['subfield_field_date_field_hour'] = '09'
-        request['subfield_field_date_field_minute'] = '59'
-        request['field_list_field'] = 'bar'
-        request['field_multi_field'] = ['bar', 'baz']
-        request['field_link_field'] = 'http://www.zope.org'
-        request['default_field_multi_field'] = ''
-        request['field_empty_field'] = ''
-        try:
-            result1 = form.validate_all(request)
-        except FormValidationError, e:
-            # XXX only render first error ...
-            self.fail('error when editing form1, field %s; error message: %s' %
-                       (e.errors[0].field_id, e.errors[0].error_text) )
-
-        try:
-            result2 = form2.validate_all(request)
-        except FormValidationError, e:
-            # XXX only render first error ...
-            self.fail('error when editing form1, field %s; error message: %s' %
-                       (e.errors[0].field_id, e.errors[0].error_text) )
-        self.assertEquals(result1, result2)
-        self.assertEquals(42, result2['int_field'])
-        self.assertEquals(2.71828, result2['float_field'])
-
-	# check link field timeout value
-	self.assertEquals(link_field.get_value('check_timeout'),
-                          form2.link_field.get_value('check_timeout'))
-
-        # XXX not tested: equal form validation failure on invalid input
-        
-        
-
-    def test_emptyGroup(self):
-        """ test bugfix: empty groups are allowed in the XMLForm """
-        form = ZMIForm('test', 'GroupTest')
-        form.add_group('empty')
-        
-        form2 = ZMIForm('test2', 'GroupTestCopy')
-        
-        xml = formToXML(form)
-        XMLToForm(xml, form2)
-        # print xml
-
-        # XXX actually the empty group is not rendered anyway, but
-        # if we get here, we are behind the bug anyway ...
-        self.assertEquals(form.render(), form2.render())
-
-        self.assertEquals(form.get_groups(), form2.get_groups())
-    
-        
-def test_suite():
-    suite = unittest.TestSuite()
-
-    suite.addTest(unittest.makeSuite(SerializeTestCase, 'test'))
-    return suite
-
-def main():
-    unittest.TextTestRunner().run(test_suite())
-
-if __name__ == '__main__':
-    main()
-    

Removed: erp5/trunk/products/Formulator/tests/test_validators.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/tests/test_validators.py?rev=26940&view=auto
==============================================================================
--- erp5/trunk/products/Formulator/tests/test_validators.py [utf8] (original)
+++ erp5/trunk/products/Formulator/tests/test_validators.py (removed)
@@ -1,464 +1,0 @@
-# -*- coding: utf-8 -*-
-import unittest
-import ZODB
-import OFS.Application
-from Products.Formulator import Validator
-from Products.Formulator.StandardFields import DateTimeField
-from Testing import ZopeTestCase
-ZopeTestCase.installProduct('Formulator')
-
-class TestField:
-    def __init__(self, id, **kw):
-        self.id = id
-        self.kw = kw
-
-    def get_value(self, name):
-        # XXX hack
-        return self.kw.get(name, 0)
-
-    def get_error_message(self, key):
-        return "nothing"
-
-    def get_form_encoding(self):
-        # XXX fake ... what if installed python does not support utf-8?
-        return "utf-8"
-
-    def has_value(self, id):
-        return self.kw.has_key(id)
-
-class ValidatorTestCase(unittest.TestCase):
-    def assertValidatorRaises(self, exception, error_key, f, *args, **kw):
-        try:
-            apply(f, args, kw)
-        except exception, e:
-            if hasattr(e, 'error_key') and e.error_key != error_key:
-                self.fail('Got wrong error. Expected %s received %s' %
-                          (error_key, e))
-            else:
-                return
-        self.fail('Expected error %s but no error received.' % error_key)
-
-class StringValidatorTestCase(ValidatorTestCase):
-    def setUp(self):
-        self.v = Validator.StringValidatorInstance
-
-    def tearDown(self):
-        pass
-        
-    def test_basic(self):
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=0, unicode=0),
-            'f', {'f' : 'foo'})
-        self.assertEqual('foo', result)
-
-    def test_htmlquotes(self):
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=0, unicode=0),
-            'f', {'f' : '<html>'})
-        self.assertEqual('<html>', result)
-
-    def test_encoding(self):
-        utf8_string = 'M\303\274ller' # this is a M&uuml;ller
-        unicode_string = unicode(utf8_string, 'utf-8')
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=0, unicode=1),
-            'f', {'f' : utf8_string})
-        self.assertEqual(unicode_string, result)
-
-    def test_strip_whitespace(self):
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=0, unicode=0),
-            'f', {'f' : ' foo  '})
-        self.assertEqual('foo', result)
-
-    def test_error_too_long(self):
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'too_long',
-            self.v.validate,
-            TestField('f', max_length=10, truncate=0, required=0, unicode=0),
-            'f', {'f' : 'this is way too long'})
-        
-    def test_error_truncate(self):
-        result = self.v.validate(
-            TestField('f', max_length=10, truncate=1, required=0, unicode=0),
-            'f', {'f' : 'this is way too long'})
-        self.assertEqual('this is way too long'[:10], result)
-
-    def test_error_required_not_found(self):
-        # empty string
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'required_not_found',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {'f': ''})
-        # whitespace only
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'required_not_found',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {'f': '   '})
-        # not in dict
-        self.assertValidatorRaises(
-            Exception, 'required_not_found',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {})
-
-    def test_whitespace_preserve(self):
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=0, unicode=0,
-                      whitespace_preserve=1),
-            'f', {'f' : ' '})
-        self.assertEqual(' ', result)
-
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=0, unicode=0,
-                      whitespace_preserve=0),
-            'f', {'f' : ' '})
-        self.assertEqual('', result)
-
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=0, unicode=0,
-                      whitespace_preserve=1),
-            'f', {'f' : ' foo '})
-        self.assertEqual(' foo ', result)
-        
-class EmailValidatorTestCase(ValidatorTestCase):
-     
-    def setUp(self):
-        self.v = Validator.EmailValidatorInstance
-        
-    def test_basic(self):
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {'f': 'foo at bar.com'})
-        self.assertEquals('foo at bar.com', result)
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {'f': 'm.faassen at vet.uu.nl'})
-        self.assertEquals('m.faassen at vet.uu.nl', result) 
-
-    def test_error_not_email(self):
-        # a few wrong email addresses should raise error
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'not_email',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {'f': 'foo at bar.com.'})
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'not_email',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {'f': '@bar.com'})
-        
-    def test_error_required_not_found(self):
-        # empty string
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'required_not_found',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1, unicode=0),
-            'f', {'f': ''})
-
-# skip PatternValidator for now
-
-class BooleanValidatorTestCase(ValidatorTestCase):
-    def setUp(self):
-        self.v = Validator.BooleanValidatorInstance
-        
-    def tearDown(self):
-        pass
-
-    def test_basic(self):
-        result = self.v.validate(
-            TestField('f'),
-            'f', {'f': ''})
-        self.assertEquals(0, result)
-        result = self.v.validate(
-            TestField('f'),
-            'f', {'f': 1})
-        self.assertEquals(1, result)
-        result = self.v.validate(
-            TestField('f'),
-            'f', {'f': 0})
-        self.assertEquals(0, result)
-
-class IntegerValidatorTestCase(ValidatorTestCase):
-    def setUp(self):
-        self.v = Validator.IntegerValidatorInstance
-
-    def test_basic(self):
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0,
-                      required=0, start="", end=""),
-            'f', {'f': '15'})
-        self.assertEquals(15, result)  
-
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0,
-                      required=0, start="", end=""),
-            'f', {'f': '0'})
-        self.assertEquals(0, result)
-
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0,
-                      required=0, start="", end=""),
-            'f', {'f': '-1'})
-        self.assertEquals(-1, result)
-        
-    def test_no_entry(self):
-        # result should be empty string if nothing entered
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0,
-                      required=0, start="", end=""),
-            'f', {'f': ''})
-        self.assertEquals("", result)
-
-    def test_ranges(self):
-        # first check whether everything that should be in range is
-        # in range
-        for i in range(0, 100):
-            result = self.v.validate(
-                TestField('f', max_length=0, truncate=0, required=1,
-                          start=0, end=100),
-                'f', {'f': str(i)})
-            self.assertEquals(i, result)
-        # now check out of range errors
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'integer_out_of_range',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start=0, end=100),
-            'f', {'f': '100'})
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'integer_out_of_range',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start=0, end=100),
-            'f', {'f': '200'})
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'integer_out_of_range',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start=0, end=100),
-            'f', {'f': '-10'})
-        # check some weird ranges
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'integer_out_of_range',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start=10, end=10),
-            'f', {'f': '10'})
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'integer_out_of_range',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start=0, end=0),
-            'f', {'f': '0'})
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'integer_out_of_range',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start=0, end=-10),
-            'f', {'f': '-1'})
-        
-    def test_error_not_integer(self):
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'not_integer',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start="", end=""),
-            'f', {'f': 'foo'})
-        
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'not_integer',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start="", end=""),
-            'f', {'f': '1.0'})
-
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'not_integer',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start="", end=""),
-            'f', {'f': '1e'})
-
-    def test_error_required_not_found(self):   
-        # empty string
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'required_not_found',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start="", end=""),
-            'f', {'f': ''})
-        # whitespace only
-        self.assertValidatorRaises(
-            Validator.ValidationError, 'required_not_found',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start="", end=""),
-            'f', {'f': '   '})
-        # not in dict
-        self.assertValidatorRaises(
-            Exception, 'required_not_found',
-            self.v.validate,
-            TestField('f', max_length=0, truncate=0, required=1,
-                      start="", end=""),
-            'f', {})
-
-class FloatValidatorTestCase(ValidatorTestCase):
-    def setUp(self):
-        self.v = Validator.FloatValidatorInstance
-
-    def test_basic(self):
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0,
-                      required=0, input_style="-1234.5"),
-            'f', {'f': '15.5'})
-        self.assertEqual(15.5, result)
-
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0,
-                      required=0, input_style="-1234.5"),
-            'f', {'f': '15.0'})
-        self.assertEqual(15.0, result)
-
-        result = self.v.validate(
-            TestField('f', max_length=0, truncate=0,
-                      required=0, input_style="-1234.5"),
-            'f', {'f': '15'})
-        self.assertEqual(15.0, result)
-
-    def test_error_not_float(self):
-        self.assertValidatorRaises(
-           Validator.ValidationError, 'not_float',
-           self.v.validate,
-           TestField('f', max_length=0, truncate=0,
-                     required=1, input_style="-1234.5"),
-           'f', {'f': '1f'})
-
-class DateTimeValidatorTestCase(ValidatorTestCase):
-    def setUp(self):
-        self.v = Validator.DateTimeValidatorInstance
-        
-    def test_normal(self):
-        result = self.v.validate(
-            DateTimeField('f'),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1',
-                  'subfield_f_hour': '10',
-                  'subfield_f_minute': '30'})
-        self.assertEquals(2002, result.year())
-        self.assertEquals(12, result.month())
-        self.assertEquals(1, result.day())
-        self.assertEquals(10, result.hour())
-        self.assertEquals(30, result.minute())
-
-    def test_ampm(self):
-        result = self.v.validate(
-            DateTimeField('f', ampm_time_style=1),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1',
-                  'subfield_f_hour': '10',
-                  'subfield_f_minute': '30',
-                  'subfield_f_ampm': 'am'})
-        self.assertEquals(2002, result.year())
-        self.assertEquals(12, result.month())
-        self.assertEquals(1, result.day())
-        self.assertEquals(10, result.hour())
-        self.assertEquals(30, result.minute())
-
-        result = self.v.validate(
-            DateTimeField('f', ampm_time_style=1),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1',
-                  'subfield_f_hour': '10',
-                  'subfield_f_minute': '30',
-                  'subfield_f_ampm': 'pm'})
-        self.assertEquals(2002, result.year())
-        self.assertEquals(12, result.month())
-        self.assertEquals(1, result.day())
-        self.assertEquals(22, result.hour())
-        self.assertEquals(30, result.minute())
-        
-        self.assertValidatorRaises(
-            KeyError, 'not_datetime',
-            self.v.validate,
-            DateTimeField('f', ampm_time_style=1),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1',
-                  'subfield_f_hour': '10',
-                  'subfield_f_minute': '30'})
-
-    def test_date_only(self):
-        result = self.v.validate(
-            DateTimeField('f', date_only=1),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1'})
-        self.assertEquals(2002, result.year())
-        self.assertEquals(12, result.month())
-        self.assertEquals(1, result.day())
-        self.assertEquals(0, result.hour())
-        self.assertEquals(0, result.minute())
-
-        result = self.v.validate(
-            DateTimeField('f', date_only=1),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1',
-                  'subfield_f_hour': '10',
-                  'subfield_f_minute': '30'})
-        self.assertEquals(2002, result.year())
-        self.assertEquals(12, result.month())
-        self.assertEquals(1, result.day())
-        self.assertEquals(0, result.hour())
-        self.assertEquals(0, result.minute())
-
-    def test_allow_empty_time(self):
-        result = self.v.validate(
-            DateTimeField('f', allow_empty_time=1, date_only=1),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1'})
-        self.assertEquals(2002, result.year())
-        self.assertEquals(12, result.month())
-        self.assertEquals(1, result.day())
-        self.assertEquals(0, result.hour())
-        self.assertEquals(0, result.minute())
-
-        result = self.v.validate(
-            DateTimeField('f', allow_empty_time=1),
-            'f', {'subfield_f_year': '2002',
-                  'subfield_f_month': '12',
-                  'subfield_f_day': '1',
-                  'subfield_f_hour': '10',
-                  'subfield_f_minute': '30'})
-        self.assertEquals(2002, result.year())
-        self.assertEquals(12, result.month())
-        self.assertEquals(1, result.day())
-        self.assertEquals(10, result.hour())
-        self.assertEquals(30, result.minute())
-
-def test_suite():
-    suite = unittest.TestSuite()
-
-    suite.addTest(unittest.makeSuite(StringValidatorTestCase, 'test'))
-    suite.addTest(unittest.makeSuite(EmailValidatorTestCase, 'test'))
-    suite.addTest(unittest.makeSuite(BooleanValidatorTestCase, 'test'))
-    suite.addTest(unittest.makeSuite(IntegerValidatorTestCase, 'test'))
-    suite.addTest(unittest.makeSuite(FloatValidatorTestCase, 'test'))
-    suite.addTest(unittest.makeSuite(DateTimeValidatorTestCase, 'test'))
-    
-    return suite
-
-def main():
-    unittest.TextTestRunner().run(test_suite())
-
-if __name__ == '__main__':
-    main()
-    




More information about the Erp5-report mailing list