示例#1
0
class TestReference:
    '''Tests for Reference, a class for referencing linked objects.'''
    @pytest.mark.parametrize(
        'schema_arg', [SomeSchema(), SomeSchema, __name__ + '.SomeSchema'])
    def test_pack(self, schema_arg):
        field = fields.Reference(schema=schema_arg, field='number')
        result = field.pack(SomeClass('one', 1))
        expected = 1
        assert result == expected

    @pytest.mark.parametrize('field', [
        fields.Reference(schema=SomeSchema(many=True, only='number'),
                         field='number'),
        fields.Reference(
            schema=SomeSchema, many=True, only='number', field='number'),
        fields.Reference(schema=__name__ + '.SomeSchema',
                         many=True,
                         only='number',
                         field='number')
    ])
    def test_pack_with_kwargs(self, field):
        result = field.pack([SomeClass('one', 1), SomeClass('two', 2)])
        expected = [1, 2]
        assert result == expected

    @pytest.mark.parametrize('field', [
        fields.Reference(schema=SomeSchema(many=True, exclude='number'),
                         field='number'),
        fields.Reference(
            schema=SomeSchema, many=True, exclude='number', field='number'),
        fields.Reference(schema=__name__ + '.SomeSchema',
                         many=True,
                         exclude='number',
                         field='number')
    ])
    def test_fail_on_missing_field_arg(self, field):
        # field 'number' is no field of the field's associated schema instance since it
        # was excluded
        with pytest.raises(KeyError):
            result = field.pack([SomeClass('one', 1), SomeClass('two', 2)])
示例#2
0
class KingSchemaReferenceSelf(KnightSchema):
    boss = fields.Reference(schema=__name__ + '.KingSchemaEmbedSelf',
                            field='name')
示例#3
0
class KingWithReferencedSubjectsStrSchema(KnightSchema):
    subjects = fields.Reference(schema=__name__ + '.KnightSchema',
                                field='name',
                                many=True)
示例#4
0
class KingWithReferencedSubjectsClassSchema(KnightSchema):
    subjects = fields.Reference(schema=KnightSchema, field='name', many=True)
示例#5
0
 def test_pack(self, schema_arg):
     field = fields.Reference(schema=schema_arg, field='number')
     result = field.pack(SomeClass('one', 1))
     expected = 1
     assert result == expected