class ApiPlainKeySchema(Schema): id = fields.Integer() role = fields.Embed(schema=RoleSchema) domains = fields.Embed(schema=DomainSchema, many=True) accounts = fields.Embed(schema=AccountSummarySchema, many=True) description = fields.String() plain_key = fields.String()
class UserDetailedSchema(Schema): id = fields.Integer() username = fields.String() firstname = fields.String() lastname = fields.String() email = fields.String() role = fields.Embed(schema=RoleSchema) accounts = fields.Embed(schema=AccountSummarySchema)
class AccountSchema(Schema): id = fields.Integer() name = fields.String() description = fields.String() contact = fields.String() mail = fields.String() domains = fields.Embed(schema=DomainSchema, many=True) apikeys = fields.Embed(schema=ApiKeySummarySchema, many=True)
class UserSchema(Schema): id = fields.Integer() username = fields.String() firstname = fields.String() lastname = fields.String() email = fields.String() role = fields.Embed(schema=RoleSchema)
class TestEmbed: '''Tests for Embed, a class for embedding linked objects.''' @pytest.mark.parametrize( 'schema_arg', [SomeSchema(), SomeSchema, __name__ + '.SomeSchema']) def test_pack(self, schema_arg): field = fields.Embed(schema=schema_arg) result = field.pack(SomeClass('one', 1)) expected = {'name': 'one', 'number': 1} assert result == expected @pytest.mark.parametrize('field', [ fields.Embed(schema=SomeSchema(many=True, only='number')), fields.Embed(schema=SomeSchema, many=True, only='number'), fields.Embed(schema=__name__ + '.SomeSchema', many=True, only='number') ]) def test_pack_with_kwargs(self, field): result = field.pack([SomeClass('one', 1), SomeClass('two', 2)]) expected = [{'number': 1}, {'number': 2}] assert result == expected
class KingSchemaEmbedSelf(KnightSchema): boss = fields.Embed(schema=__name__ + '.KingSchemaEmbedSelf', exclude='boss')
class KingWithEmbeddedSubjectsStrSchema(KnightSchema): subjects = fields.Embed(schema=__name__ + '.KnightSchema', many=True)
class KingWithEmbeddedSubjectsClassSchema(KnightSchema): subjects = fields.Embed(schema=KnightSchema, many=True)
class EmbeddingSchema(schema.Schema): another_field = fields.String() # here we provide a schema _instance_. the kwarg "many" is unnecessary incorrect_embed_field = fields.Embed(schema=embed_schema, many=True)
class ApiKeySchema(Schema): id = fields.Integer() role = fields.Embed(schema=RoleSchema) domains = fields.Embed(schema=DomainSchema, many=True) description = fields.String() key = fields.String()
class AccountSummarySchema(Schema): id = fields.Integer() name = fields.String() domains = fields.Embed(schema=DomainSchema, many=True)
class CoveragesSchema(Schema): coverages = fields.Embed(schema=CoverageSchema, many=True)
def test_pack(self, schema_arg): field = fields.Embed(schema=schema_arg) result = field.pack(SomeClass('one', 1)) expected = {'name': 'one', 'number': 1} assert result == expected