Skip to content

Commit 44007a4

Browse files
committed
Test StringSerializableRegistry.remove
1 parent ebd7fd4 commit 44007a4

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

rest_client_gen/dynamic_typing/string_serializable.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def remove(self, cls: type):
7979
"""
8080
self.types.remove(cls)
8181
for base, replace in list(self.replaces):
82-
if replace is cls:
82+
if replace is cls or base is cls:
8383
self.replaces.remove((base, replace))
8484

8585
def resolve(self, *types: T_StringSerializable) -> Collection[T_StringSerializable]:

test/test_dynamic_typing/test_string_serializable_registry.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import pytest
22

3-
from rest_client_gen.dynamic_typing.string_serializable import StringSerializable, StringSerializableRegistry
3+
from rest_client_gen.dynamic_typing import IsoTimeString
4+
from rest_client_gen.dynamic_typing.string_serializable import (FloatString, IntString, StringSerializable,
5+
StringSerializableRegistry)
6+
from rest_client_gen.generator import MetadataGenerator
47

58
r = StringSerializableRegistry()
69

@@ -54,7 +57,30 @@ class Y(StringSerializable):
5457
pytest.param((X, B), {B, X}),
5558
]
5659

60+
5761
@pytest.mark.parametrize("value,expected", test_data)
5862
def test_string_serializable_registry(value, expected):
5963
result = r.resolve(*value)
60-
assert result == expected
64+
assert result == expected
65+
66+
67+
r2 = StringSerializableRegistry()
68+
gen = MetadataGenerator(r2)
69+
70+
r2.add(cls=IsoTimeString)
71+
r2.add(cls=IntString)
72+
r2.add(replace_types=(IntString,), cls=FloatString)
73+
74+
75+
@pytest.mark.xfail()
76+
def test_without_remove():
77+
assert gen._detect_type("12") == IntString
78+
79+
80+
r2.remove(IsoTimeString)
81+
r2.add(cls=IsoTimeString)
82+
83+
84+
def test_remove():
85+
assert gen._detect_type("12") == IntString
86+
assert gen._detect_type("12:14") == IsoTimeString

0 commit comments

Comments
 (0)