Skip to content

Commit 28a6bf8

Browse files
author
Sergio García Prado
committed
Merge remote-tracking branch 'origin/0.7.1' into 0.8.0
# Conflicts: # packages/core/minos-microservice-aggregate/tests/test_aggregate/test_deltas/test_models.py
2 parents 9ec3615 + 8c34054 commit 28a6bf8

File tree

4 files changed

+19
-12
lines changed
  • packages/core
    • minos-microservice-aggregate
    • minos-microservice-common
      • minos/common/model/serializers/avro/data
      • tests/test_common/test_model/test_serializers/test_avro/test_data

4 files changed

+19
-12
lines changed

packages/core/minos-microservice-aggregate/minos/aggregate/deltas/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ def simplified_name(self) -> str:
6363
return self.name.rsplit(".", 1)[-1]
6464

6565
def __lt__(self, other: Any) -> bool:
66-
return isinstance(other, type(self)) and self.version < other.version
66+
return isinstance(other, type(self)) and (
67+
(self.name == other.name and self.version < other.version) or self.created_at < other.created_at
68+
)
6769

6870
def __getitem__(self, item: str) -> Any:
6971
try:

packages/core/minos-microservice-aggregate/tests/test_aggregate/test_deltas/test_models.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,20 +55,17 @@ def test_simplified_name(self):
5555
self.assertEqual("Car", self.diff.simplified_name)
5656

5757
def test_total_ordering(self):
58-
observed = [
58+
values = [
5959
Delta.from_entity(Car(3, "blue", version=4)),
6060
Delta.from_entity(Car(3, "blue", version=1)),
6161
Delta.from_entity(Car(3, "blue", version=3)),
6262
Delta.from_entity(Car(3, "blue", version=2)),
63+
Delta.from_entity(Owner("foo", "bar", version=4, updated_at=current_datetime())),
64+
Delta.from_entity(Owner("foo", "bar", version=3, updated_at=current_datetime())),
6365
]
64-
observed.sort()
66+
observed = sorted(values)
6567

66-
expected = [
67-
Delta.from_entity(Car(3, "blue", version=1)),
68-
Delta.from_entity(Car(3, "blue", version=2)),
69-
Delta.from_entity(Car(3, "blue", version=3)),
70-
Delta.from_entity(Car(3, "blue", version=4)),
71-
]
68+
expected = [values[5], values[4], values[1], values[3], values[2], values[0]]
7269
self.assertEqual(expected, observed)
7370

7471
def test_from_entity(self):

packages/core/minos-microservice-common/minos/common/model/serializers/avro/data/decoder.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
TYPE_CHECKING,
2525
Any,
2626
Optional,
27-
Type,
2827
TypeVar,
2928
Union,
3029
get_args,
@@ -251,7 +250,7 @@ def _build_uuid(data: Any, **kwargs) -> UUID:
251250
pass
252251
raise DataDecoderTypeException(UUID, data)
253252

254-
def _build_model(self, type_: Type[Model], data: Any, **kwargs) -> Any:
253+
def _build_model(self, type_: type[Model], data: Any, **kwargs) -> Any:
255254
if is_type_subclass(type_) and isinstance(data, type_):
256255
return data
257256
return self._build_model_type(ModelType.from_model(type_), data, **kwargs)
@@ -263,7 +262,7 @@ def _build_model_type(self, type_: ModelType, data: Any, **kwargs) -> Any:
263262
if (ans := type_.model_cls.decode_data(self, data, type_, **kwargs)) is not MissingSentinel:
264263
return ans
265264

266-
if isinstance(data, dict):
265+
if isinstance(data, Mapping):
267266
with suppress(Exception):
268267
decoded_data = {
269268
field_name: self._build(field_type, data[field_name], **kwargs)

packages/core/minos-microservice-common/tests/test_common/test_model/test_serializers/test_avro/test_data/test_decoder.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,15 @@ def test_model_with_inheritance(self):
303303
observed = decoder.build(value)
304304
self.assertEqual(value, observed)
305305

306+
# noinspection PyUnusedLocal,PyPep8Naming
307+
def test_model_with_model(self):
308+
Foo = ModelType.build("Foo", one=int)
309+
Bar = ModelType.build("Bar", one=int, two=str)
310+
311+
self.assertEqual(Foo(1234), AvroDataDecoder(Foo).build(Bar(1234, "5678")))
312+
self.assertEqual(Foo(1234), AvroDataDecoder(Union[Foo, Bar]).build(Bar(1234, "5678")))
313+
self.assertEqual(Bar(1234, "5678"), AvroDataDecoder(Union[Bar, Foo]).build(Bar(1234, "5678")))
314+
306315
def test_model_from_dict(self):
307316
decoder = AvroDataDecoder(User)
308317
value = User(1234)

0 commit comments

Comments
 (0)