def test_api_register_field_parameters(self, app, mapping): api = Api(app) class CustomField(ma.fields.Field): pass api.register_field(CustomField, *mapping) class Document(ma.Schema): field = CustomField() api.spec.components.schema('Document', schema=Document) if len(mapping) == 2: properties = {'field': {'type': 'custom string'}} # If mapping format is None, it does not appear in the spec if mapping[1] is not None: properties['field']['format'] = mapping[1] else: properties = {'field': {'type': 'integer', 'format': 'int32'}} assert get_schemas(api.spec)['Document'] == { 'properties': properties, 'type': 'object' }
def test_api_register_field_before_and_after_init(self, app, openapi_version): app.config['OPENAPI_VERSION'] = openapi_version api = Api() class CustomField_1(ma.fields.Field): pass class CustomField_2(ma.fields.Field): pass api.register_field(CustomField_1, 'custom string', 'custom') api.init_app(app) api.register_field(CustomField_2, 'custom string', 'custom') class Schema_1(ma.Schema): int_1 = ma.fields.Int() custom_1 = CustomField_1() class Schema_2(ma.Schema): int_2 = ma.fields.Int() custom_2 = CustomField_2() api.spec.components.schema('Schema_1', schema=Schema_1) api.spec.components.schema('Schema_2', schema=Schema_2) schema_defs = get_schemas(api.spec) assert schema_defs['Schema_1']['properties']['custom_1'] == { 'type': 'custom string', 'format': 'custom' } assert schema_defs['Schema_2']['properties']['custom_2'] == { 'type': 'custom string', 'format': 'custom' }