def test_fieldset_schema_io(self): fs = FieldSet({ "id": fields.Number(io='r'), "name": fields.String(), "secret": fields.String(io='c'), "updateOnly": fields.String(io='u'), }) self.assertEqual( { "type": "object", "properties": { "id": { "type": "number", "readOnly": True }, "name": { "type": "string" }, }, }, fs.response, ) self.assertEqual( { "type": "object", "additionalProperties": False, "properties": { "name": { "type": "string" }, "updateOnly": { "type": "string" }, }, }, fs.update, ) self.assertEqual( { "name": { "type": "string" }, "secret": { "type": "string" } }, fs.create['properties'], ) self.assertEqual({"name", "secret"}, set(fs.create['required']))
def test_fieldset_format(self): self.assertEqual({ "number": 42, "constant": "constant" }, FieldSet({ "number": fields.Number(), "constant": fields.String(io='r'), "secret": fields.String(io='w'), }).format({ "number": 42, "constant": "constant", "secret": "secret" }))
def test_number_convert(self): with self.assertRaises(ValidationError): fields.Number().convert("nope") with self.assertRaises(ValidationError): fields.Number(nullable=False).convert(None) with self.assertRaises(ValidationError): fields.Number(minimum=3).convert(2) with self.assertRaises(ValidationError): fields.Number(minimum=3, exclusive_minimum=True).convert(3) with self.assertRaises(ValidationError): fields.Number(maximum=3, exclusive_maximum=True).convert(3) self.assertEqual(3, fields.Number(maximum=3).convert(3)) self.assertEqual(3, fields.Number(minimum=3).convert(3)) self.assertEqual(None, fields.Number(nullable=True).convert(None)) self.assertEqual(1.23, fields.Number().convert(1.23))
class DrinkResource(ModelResource): recipe = ItemAttributeRoute( fields.Array( fields.Object( properties={ "ingredient": fields.ToOne("ingredient"), "volume": fields.Number() }))) class Meta: name = "drink" model = name manager = MemoryManager id_field_class = fields.Integer include_type = True class Schema: name = fields.String()
def create(self, value: fields.Number()) -> fields.Inline('self'): return {"name": "foo", "value": value}
class Schema: name = fields.String() value = fields.Number()