def test_enum_type_substitution(self): self.assertSchemaCloned(schema.enum(1, 2, 3), 1) true_of_false = schema.enum('true', 'false') value = 'true' self.assertIsInstance(true_of_false % value, schema.types.String) self.assertSchemaHasValue(true_of_false % value, value)
def test_it_validates_enumerators(self): self.assertValidationPasses('banana', schema.enum('banana', 'cucumber')) self.assertValidationPasses(None, schema.enum(None, False, 0, '')) self.assertValidationFails('carrot', schema.enum('banana', 'cucumber')) self.assertValidationFails(0, schema.enum(*range(1, 10))) self.assertValidationFails(False, schema.enum(0, 1))
def test_enum_type_generator(self): # enumerators enumerators = (1, 2, 3) data = fake(schema.enum(*enumerators)) self.assertIn(data, enumerators) enumerators = ('banana', 'cucumber') data = fake(schema.enum(*enumerators)) self.assertIn(data, enumerators) # overriding data = fake(schema.enum('true', 'false', True, False), 'true') self.assertEqual(data, 'true')
def test_it_validates_nullable(self): self.assertValidationPasses(None, schema.enum('banana', 'cucumber').nullable) self.assertValidationPasses(None, schema.enum(None, False, 0, '').nullable) self.assertValidationFails(False, schema.enum('true', 'false').nullable) self.assertValidationFails(0, schema.enum('true', 'false').nullable) self.assertValidationFails('', schema.enum('true', 'false').nullable) self.assertValidationFails([], schema.enum('true', 'false').nullable) self.assertValidationFails({}, schema.enum('true', 'false').nullable)
def test_it_validates_null_type(self): self.assertValidationPasses(None, schema.enum('banana', 'cucumber', None)) self.assertValidationPasses(None, schema.enum(None, False, 0, '')) self.assertValidationFails(False, schema.enum('true', 'false', None)) self.assertValidationFails(0, schema.enum('true', 'false', None)) self.assertValidationFails('', schema.enum('true', 'false', None)) self.assertValidationFails([], schema.enum('true', 'false', None)) self.assertValidationFails({}, schema.enum('true', 'false', None))
def test_it_validates_nullable(self): with warnings.catch_warnings(): warnings.simplefilter('ignore') self.assertValidationPasses( None, schema.enum('banana', 'cucumber').nullable) self.assertValidationPasses( None, schema.enum(None, False, 0, '').nullable) self.assertValidationFails(False, schema.enum('true', 'false').nullable) self.assertValidationFails(0, schema.enum('true', 'false').nullable) self.assertValidationFails('', schema.enum('true', 'false').nullable) self.assertValidationFails([], schema.enum('true', 'false').nullable) self.assertValidationFails({}, schema.enum('true', 'false').nullable)
def test_enum_type_representation(self): self.assertRepr(schema.enum(1, 2, 3), 'schema.enum(1, 2, 3)') self.assertRepr(schema.enum('a', 'b', 'c'), "schema.enum('a', 'b', 'c')") self.assertRepr(schema.enum(0, 1).nullable, 'schema.enum(0, 1).nullable')