def test_duplicate_tag(): class TagDict(JSONTag): key = " d" s = TaggedJSONSerializer() pytest.raises(KeyError, s.register, TagDict) s.register(TagDict, force=True, index=0) assert isinstance(s.tags[" d"], TagDict) assert isinstance(s.order[0], TagDict)
def test_duplicate_tag(): class TagDict(JSONTag): key = ' d' s = TaggedJSONSerializer() pytest.raises(KeyError, s.register, TagDict) s.register(TagDict, force=True, index=0) assert isinstance(s.tags[' d'], TagDict) assert isinstance(s.order[0], TagDict)
def test_tag_order(): class Tag1(JSONTag): key = " 1" class Tag2(JSONTag): key = " 2" s = TaggedJSONSerializer() s.register(Tag1, index=-1) assert isinstance(s.order[-2], Tag1) s.register(Tag2, index=None) assert isinstance(s.order[-1], Tag2)
def test_custom_tag(): class Foo: # noqa: B903, for Python2 compatibility def __init__(self, data): self.data = data class TagFoo(JSONTag): __slots__ = () key = " f" def check(self, value): return isinstance(value, Foo) def to_json(self, value): return self.serializer.tag(value.data) def to_python(self, value): return Foo(value) s = TaggedJSONSerializer() s.register(TagFoo) assert s.loads(s.dumps(Foo("bar"))).data == "bar"
def test_custom_tag(): class Foo(object): def __init__(self, data): self.data = data class TagFoo(JSONTag): __slots__ = () key = ' f' def check(self, value): return isinstance(value, Foo) def to_json(self, value): return self.serializer.tag(value.data) def to_python(self, value): return Foo(value) s = TaggedJSONSerializer() s.register(TagFoo) assert s.loads(s.dumps(Foo('bar'))).data == 'bar'