def test_validation(self):
        obj = ValidatingDocument()
        try:
            obj.full_clean()
        except ValidationError as error:
            self.assertFalse('allow_null' in error.message_dict)
        else:
            self.fail('Validation is broken')

        obj.with_choices = 'c'
        obj.not_null = 'foo'
        obj.allow_blank = ''
        obj.not_blank = ''
        try:
            obj.subschema = 'Not a schema'
        except ValidationError as error:
            pass
        else:
            self.fail('Setting a subschema should evaluate immediately')

        try:
            obj.full_clean()
        except ValidationError as error:
            self.assertFalse('not_null' in error.message_dict, str(error))
            self.assertFalse('allow_blank' in error.message_dict, str(error))
            self.assertTrue('with_choices' in error.message_dict, str(error))
            self.assertTrue('not_blank' in error.message_dict, str(error))
            self.assertTrue('subschema' in error.message_dict, str(error))
        else:
            self.fail('Validation is broken')

        try:
            obj.subschema = SimpleSchema2()
        except ValidationError as error:
            pass
        else:
            self.fail('Setting a subschema should evaluate immediately')

        obj.with_choices = 'b'
        obj.not_blank = 'foo'
        obj.subschema = SimpleSchema()
        obj.full_clean()
 def test_to_primitive(self):
     obj = SimpleSchema(_python_data={'charfield': 'charmander'})
     prim_data = obj.to_primitive(obj)
     self.assertEqual(prim_data, {'charfield': 'charmander'})
 def test_from_portable_primitive(self):
     obj = SimpleSchema(_primitive_data={'charfield': 'charmander'})
     assert obj.charfield, 'Failed to initialize python data'
     py_obj = obj.to_python({'charfield': 'charmander'})
     py_obj.normalize_portable_primitives()
     self.assertEqual(obj._primitive_data, py_obj._primitive_data)
 def test_traverse(self):
     obj = SimpleSchema(charfield='charmander')
     self.assertEqual(obj.dot_notation('charfield'), 'charmander')
 def test_to_python(self):
     obj = SimpleSchema(_primitive_data={'charfield': 'charmander'})
     py_obj = obj.to_python({'charfield': 'charmander'})
     self.assertEqual(obj._primitive_data, py_obj._primitive_data)