[Checkins] SVN: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py 100% coverage for z.s._schema

Tres Seaver cvs-admin at zope.org
Fri Apr 20 20:06:59 UTC 2012


Log message for revision 125225:
  100% coverage for z.s._schema

Changed:
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py

-=-
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py	2012-04-20 20:06:52 UTC (rev 125224)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py	2012-04-20 20:06:56 UTC (rev 125225)
@@ -143,10 +143,103 @@
         self.assertEqual(names, ['title', 'description', 'spam', 'foo'])
 
 
+class Test_getValidationErrors(unittest.TestCase):
+
+    def _callFUT(self, schema, object):
+        from zope.schema import getValidationErrors
+        return getValidationErrors(schema, object)
+
+    def test_schema(self):
+        from zope.interface import Interface
+        class IEmpty(Interface):
+            pass
+        errors = self._callFUT(IEmpty, object())
+        self.assertEqual(len(errors), 0)
+
+    def test_schema_with_field_errors(self):
+        from zope.interface import Interface
+        from zope.schema import Text
+        from zope.schema.interfaces import SchemaNotFullyImplemented
+        class IWithRequired(Interface):
+            must = Text(required=True)
+        errors = self._callFUT(IWithRequired, object())
+        self.assertEqual(len(errors), 1)
+        self.assertEqual(errors[0][0], 'must')
+        self.assertEqual(errors[0][1].__class__, SchemaNotFullyImplemented)
+
+    def test_schema_with_invariant_errors(self):
+        from zope.interface import Interface
+        from zope.interface import invariant
+        from zope.interface.exceptions import Invalid
+        class IWithInvariant(Interface):
+            @invariant
+            def _epic_fail(obj):
+                raise Invalid('testing')
+        errors = self._callFUT(IWithInvariant, object())
+        self.assertEqual(len(errors), 1)
+        self.assertEqual(errors[0][0], None)
+        self.assertEqual(errors[0][1].__class__, Invalid)
+
+class Test_getSchemaValidationErrors(unittest.TestCase):
+
+    def _callFUT(self, schema, object):
+        from zope.schema import getSchemaValidationErrors
+        return getSchemaValidationErrors(schema, object)
+
+    def test_schema_wo_fields(self):
+        from zope.interface import Interface
+        from zope.interface import Attribute
+        class INoFields(Interface):
+            def method():
+                pass
+            attr = Attribute('ignoreme')
+        errors = self._callFUT(INoFields, object())
+        self.assertEqual(len(errors), 0)
+
+    def test_schema_with_fields_ok(self):
+        from zope.interface import Interface
+        from zope.schema import Text
+        from zope.schema._compat import u
+        class IWithFields(Interface):
+            foo = Text()
+            bar = Text()
+        class Obj(object):
+            foo = u('Foo')
+            bar = u('Bar')
+        errors = self._callFUT(IWithFields, Obj())
+        self.assertEqual(len(errors), 0)
+
+    def test_schema_with_missing_field(self):
+        from zope.interface import Interface
+        from zope.schema import Text
+        from zope.schema.interfaces import SchemaNotFullyImplemented
+        class IWithRequired(Interface):
+            must = Text(required=True)
+        errors = self._callFUT(IWithRequired, object())
+        self.assertEqual(len(errors), 1)
+        self.assertEqual(errors[0][0], 'must')
+        self.assertEqual(errors[0][1].__class__, SchemaNotFullyImplemented)
+
+    def test_schema_with_invalid_field(self):
+        from zope.interface import Interface
+        from zope.schema import Int
+        from zope.schema.interfaces import TooSmall
+        class IWithMinium(Interface):
+            value = Int(required=True, min=0)
+        class Obj(object):
+            value = -1
+        errors = self._callFUT(IWithMinium, Obj())
+        self.assertEqual(len(errors), 1)
+        self.assertEqual(errors[0][0], 'value')
+        self.assertEqual(errors[0][1].__class__, TooSmall)
+
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(Test_getFields),
         unittest.makeSuite(Test_getFieldsInOrder),
         unittest.makeSuite(Test_getFieldNames),
         unittest.makeSuite(Test_getFieldNamesInOrder),
+        unittest.makeSuite(Test_getValidationErrors),
+        unittest.makeSuite(Test_getSchemaValidationErrors),
     ))



More information about the checkins mailing list