def test_optional_validation(self): """Fields are required by default but can be made optional""" fields = [ IntegerField(required=False), UnicodeField(required=False), ObjectField(required=False), ArrayField(required=False), IsoDateString(required=False), # subschema tested elsewhere... ] for field in fields: assert field.validate(None)
class Fancy(Schema): # if = IntegerField() # Ouch! SyntaxError! __if = IntegerField()
class SomeSchema(Schema): wat = IntegerField()
class MostIn(Schema): foo = IntegerField()
class SomeSchema(Schema): good = IntegerField()
class Myschema(Schema): wow = IntegerField()
class TargetSub(Schema): wow = IntegerField(required=False)
class InnerTarget(Schema): goal = IntegerField()
class SchemaA(Schema): beans = IntegerField() carrots = IntegerField()
class SchemaB(SchemaA): turnips = IntegerField()
class SchemaA(Schema): peas = IntegerField()
class OtherSchema(Schema): cool = IntegerField(required=True) bad = IntegerField(required=True)
class FirstSchema(Schema): wow = IntegerField(required=True) umm = IntegerField(required=False)
class Conversation(Schema): numbers = ArrayField(IntegerField()) conversants = ArrayField(Subschema(Person))
class Schema2(Schema): peas = UnicodeField() carrots = IntegerField() beans = IntegerField()
class TargetInner(Schema): goal = IntegerField()
class InnerSource(Schema): okay = IntegerField()
class SchemaB(Schema): legumes = IntegerField() root_veg = IntegerField()
class SourceSub(Schema): something = IntegerField(required=False)
class SquarePeg(Schema): id = IntegerField() name = UnicodeField() width = NumberField()
class Source(Schema): together = ArrayField(IntegerField()) sep_1 = IntegerField() sep_2 = IntegerField()
def test_optional_validation(self): """Fields are required by default but can be made optional""" field = IntegerField(required=False) assert field.validate(None)
class MySchema(Schema): wow = IntegerField(required=False)
class ManySchema(Schema): prop = IntegerField()
class SomeSchema(Schema): inner = IntegerField()
class Second(Schema): prop = IntegerField()
def test_int_validation(self): field = IntegerField() assert field.validate(1) with self.assertRaises(Invalid): field.validate("wow") with self.assertRaises(Invalid): field.validate(1.0) with self.assertRaises(Invalid): field.validate([]) with self.assertRaises(Invalid): field.validate(None)
class Second(GenericSchema): prop = IntegerField()
class Source(Schema): flat = IntegerField() nice = IntegerField()
class Schema1(Schema): my_str = UnicodeField() my_int = IntegerField() another_str = UnicodeField()