From 5cd17740101c9569ffd485d2d76038109dbe5e22 Mon Sep 17 00:00:00 2001
From: Nicolas Delaby <nicolas@nexedi.com>
Date: Tue, 12 May 2009 15:07:17 +0000
Subject: [PATCH] Maintain Test against ERP5 patches

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@26936 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/Formulator/tests/test_Form.py       | 12 ++--
 product/Formulator/tests/test_all.py        |  5 +-
 product/Formulator/tests/test_serialize.py  | 75 +++++++++++++++------
 product/Formulator/tests/test_validators.py | 36 +++++-----
 4 files changed, 81 insertions(+), 47 deletions(-)

diff --git a/product/Formulator/tests/test_Form.py b/product/Formulator/tests/test_Form.py
index c8a64b5551..7c60d3b662 100644
--- a/product/Formulator/tests/test_Form.py
+++ b/product/Formulator/tests/test_Form.py
@@ -1,5 +1,6 @@
+# -*- coding: utf-8 -*-
 import unittest, re
-import Zope
+import Zope2
 
 # XXX this does not work for zope2.x if x < 3
 # can we fake this? should we do this?
@@ -12,6 +13,9 @@ 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
@@ -20,8 +24,8 @@ from Products.PythonScripts.PythonScript import PythonScript
 class FormTestCase(unittest.TestCase):
 
     def setUp(self):
-        get_transaction().begin()
-        self.connection = Zope.DB.open()
+        transaction.begin()
+        self.connection = Zope2.DB.open()
         self.root = makerequest.makerequest(
             self.connection.root()['Application'])
 
@@ -31,7 +35,7 @@ class FormTestCase(unittest.TestCase):
 
 
     def tearDown(self):
-        get_transaction().abort()
+        transaction.abort()
         self.connection.close()
         
 
diff --git a/product/Formulator/tests/test_all.py b/product/Formulator/tests/test_all.py
index d2e0c1d6ce..1a4cc47f1b 100644
--- a/product/Formulator/tests/test_all.py
+++ b/product/Formulator/tests/test_all.py
@@ -1,11 +1,12 @@
+# -*- coding: utf-8 -*-
 # Copyright (c) 2002 Infrae. All rights reserved.
 # See also LICENSE.txt
 # $Revision: 1.2 $
 import unittest
-import Zope
+import Zope2
 
 try:
-    from Zope import startup
+    from Zope2 import startup
     startup()
 except ImportError:
     # startup is only in Zope2.6
diff --git a/product/Formulator/tests/test_serialize.py b/product/Formulator/tests/test_serialize.py
index aa5157b395..c23f89b220 100644
--- a/product/Formulator/tests/test_serialize.py
+++ b/product/Formulator/tests/test_serialize.py
@@ -1,12 +1,13 @@
+# -*- coding: utf-8 -*-
 import unittest
-import Zope
 
 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.
@@ -25,7 +26,7 @@ class FakeRequest:
     def __setitem__(self, key, value):
         self.dict[key] = value
 
-    def get(self, key, default_value):
+    def get(self, key, default_value=None):
         return self.dict.get(key, default_value)
 
     def update(self, other_dict):
@@ -221,8 +222,6 @@ class SerializeTestCase(unittest.TestCase):
             text2 = e.errors[0].error_text
 
         self.assertEquals(text1, text2)
-        
-        
 
 
     def test_fieldValueTypes(self):
@@ -249,10 +248,9 @@ class SerializeTestCase(unittest.TestCase):
         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',
@@ -260,27 +258,52 @@ class SerializeTestCase(unittest.TestCase):
                           }
         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'})
+            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':'$'})
+            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',
@@ -288,6 +311,8 @@ class SerializeTestCase(unittest.TestCase):
             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',
@@ -298,6 +323,8 @@ class SerializeTestCase(unittest.TestCase):
             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',
@@ -307,6 +334,8 @@ class SerializeTestCase(unittest.TestCase):
             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':'',
@@ -316,9 +345,9 @@ class SerializeTestCase(unittest.TestCase):
         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)
 
@@ -335,14 +364,16 @@ class SerializeTestCase(unittest.TestCase):
         request.clear()
         request['field_int_field'] = '42'
         request['field_float_field'] = '2.71828'
-        request['subfield_date_field_month'] = '11'
-        request['subfield_date_field_day'] = '11'
-        request['subfield_date_field_year'] = '2011'
-        request['subfield_date_field_hour'] = '09'
-        request['subfield_date_field_minute'] = '59'
+        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:
diff --git a/product/Formulator/tests/test_validators.py b/product/Formulator/tests/test_validators.py
index a2da6b2b12..87c448b0db 100644
--- a/product/Formulator/tests/test_validators.py
+++ b/product/Formulator/tests/test_validators.py
@@ -1,8 +1,11 @@
+# -*- 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):
@@ -20,12 +23,15 @@ class TestField:
         # 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 Validator.ValidationError, e:
-            if e.error_key != error_key:
+        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:
@@ -93,7 +99,7 @@ class StringValidatorTestCase(ValidatorTestCase):
             'f', {'f': '   '})
         # not in dict
         self.assertValidatorRaises(
-            Validator.ValidationError, 'required_not_found',
+            Exception, 'required_not_found',
             self.v.validate,
             TestField('f', max_length=0, truncate=0, required=1, unicode=0),
             'f', {})
@@ -175,10 +181,6 @@ class BooleanValidatorTestCase(ValidatorTestCase):
             TestField('f'),
             'f', {'f': 0})
         self.assertEquals(0, result)
-        result = self.v.validate(
-            TestField('f'),
-            'f', {})
-        self.assertEquals(0, result)
 
 class IntegerValidatorTestCase(ValidatorTestCase):
     def setUp(self):
@@ -298,7 +300,7 @@ class IntegerValidatorTestCase(ValidatorTestCase):
             'f', {'f': '   '})
         # not in dict
         self.assertValidatorRaises(
-            Validator.ValidationError, 'required_not_found',
+            Exception, 'required_not_found',
             self.v.validate,
             TestField('f', max_length=0, truncate=0, required=1,
                       start="", end=""),
@@ -311,19 +313,19 @@ class FloatValidatorTestCase(ValidatorTestCase):
     def test_basic(self):
         result = self.v.validate(
             TestField('f', max_length=0, truncate=0,
-                      required=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),
+                      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),
+                      required=0, input_style="-1234.5"),
             'f', {'f': '15'})
         self.assertEqual(15.0, result)
 
@@ -331,7 +333,8 @@ class FloatValidatorTestCase(ValidatorTestCase):
         self.assertValidatorRaises(
            Validator.ValidationError, 'not_float',
            self.v.validate,
-           TestField('f', max_length=0, truncate=0, required=1),
+           TestField('f', max_length=0, truncate=0,
+                     required=1, input_style="-1234.5"),
            'f', {'f': '1f'})
 
 class DateTimeValidatorTestCase(ValidatorTestCase):
@@ -382,7 +385,7 @@ class DateTimeValidatorTestCase(ValidatorTestCase):
         self.assertEquals(30, result.minute())
         
         self.assertValidatorRaises(
-            Validator.ValidationError, 'not_datetime',
+            KeyError, 'not_datetime',
             self.v.validate,
             DateTimeField('f', ampm_time_style=1),
             'f', {'subfield_f_year': '2002',
@@ -418,7 +421,7 @@ class DateTimeValidatorTestCase(ValidatorTestCase):
 
     def test_allow_empty_time(self):
         result = self.v.validate(
-            DateTimeField('f', allow_empty_time=1),
+            DateTimeField('f', allow_empty_time=1, date_only=1),
             'f', {'subfield_f_year': '2002',
                   'subfield_f_month': '12',
                   'subfield_f_day': '1'})
@@ -441,11 +444,6 @@ class DateTimeValidatorTestCase(ValidatorTestCase):
         self.assertEquals(10, result.hour())
         self.assertEquals(30, result.minute())
 
-    def test_allow_empty_time2(self):
-        result = self.v.validate(
-            DateTimeField('f', allow_empty_time=1, required=0), 'f', {})
-        self.assertEquals(None, result)
-        
 def test_suite():
     suite = unittest.TestSuite()
 
-- 
2.30.9