[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