refactor: rename raise_event to apply_event and _events to _changes
This commit is contained in:
@@ -6,13 +6,13 @@ from domain.marketplace.domain_event import DomainEvent
|
|||||||
|
|
||||||
|
|
||||||
class Entity(ABC):
|
class Entity(ABC):
|
||||||
_events: tuple[DomainEvent, ...] = ()
|
_changes: tuple[DomainEvent, ...] = ()
|
||||||
|
|
||||||
def raise_event(self, event: DomainEvent) -> Self:
|
def apply_event(self, event: DomainEvent) -> Self:
|
||||||
return replace(self, _events=(*self._events, event))
|
return replace(self, _changes=(*self._changes, event))
|
||||||
|
|
||||||
def get_changes(self) -> tuple[DomainEvent, ...]:
|
def get_changes(self) -> tuple[DomainEvent, ...]:
|
||||||
return self._events
|
return self._changes
|
||||||
|
|
||||||
def clear_changes(self) -> Self:
|
def clear_changes(self) -> Self:
|
||||||
return replace(self, _events=())
|
return replace(self, _changes=())
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ class ClassifiedAd(Entity):
|
|||||||
text: ClassifiedAdText = field(default_factory=lambda: ClassifiedAdText(text=""))
|
text: ClassifiedAdText = field(default_factory=lambda: ClassifiedAdText(text=""))
|
||||||
price: Price = field(default_factory=lambda: Price(amount=Decimal("0.00")))
|
price: Price = field(default_factory=lambda: Price(amount=Decimal("0.00")))
|
||||||
state: ClassifiedAdState = ClassifiedAdState.Inactive
|
state: ClassifiedAdState = ClassifiedAdState.Inactive
|
||||||
_events: tuple[DomainEvent, ...] = ()
|
_changes: tuple[DomainEvent, ...] = ()
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
if not self._events:
|
if not self._changes:
|
||||||
object.__setattr__(self, '_events', (
|
object.__setattr__(self, '_changes', (
|
||||||
ClassifiedAdCreated(id=self.id.value, owner_id=self._ownerId.value),
|
ClassifiedAdCreated(id=self.id.value, owner_id=self._ownerId.value),
|
||||||
))
|
))
|
||||||
|
|
||||||
@@ -57,27 +57,27 @@ class ClassifiedAd(Entity):
|
|||||||
self._ensure_valid_state()
|
self._ensure_valid_state()
|
||||||
|
|
||||||
updated = replace(self, state=ClassifiedAdState.PendingReview)
|
updated = replace(self, state=ClassifiedAdState.PendingReview)
|
||||||
return updated.raise_event(
|
return updated.apply_event(
|
||||||
ClassifiedAdSentForReview(id=self.id.value)
|
ClassifiedAdSentForReview(id=self.id.value)
|
||||||
)
|
)
|
||||||
|
|
||||||
def set_title(self, title: ClassifiedAdTitle) -> ClassifiedAd:
|
def set_title(self, title: ClassifiedAdTitle) -> ClassifiedAd:
|
||||||
updated = replace(self, title=title)
|
updated = replace(self, title=title)
|
||||||
updated._ensure_valid_state()
|
updated._ensure_valid_state()
|
||||||
return updated.raise_event(
|
return updated.apply_event(
|
||||||
ClassifiedAdTitleChanged(id=self.id.value, title=title.title)
|
ClassifiedAdTitleChanged(id=self.id.value, title=title.title)
|
||||||
)
|
)
|
||||||
|
|
||||||
def update_text(self, text: ClassifiedAdText) -> ClassifiedAd:
|
def update_text(self, text: ClassifiedAdText) -> ClassifiedAd:
|
||||||
updated = replace(self, text=text)
|
updated = replace(self, text=text)
|
||||||
updated._ensure_valid_state()
|
updated._ensure_valid_state()
|
||||||
return updated.raise_event(
|
return updated.apply_event(
|
||||||
ClassifiedAdTextUpdated(id=self.id.value, ad_text=text.text)
|
ClassifiedAdTextUpdated(id=self.id.value, ad_text=text.text)
|
||||||
)
|
)
|
||||||
|
|
||||||
def update_price(self, price: Price) -> ClassifiedAd:
|
def update_price(self, price: Price) -> ClassifiedAd:
|
||||||
updated = replace(self, price=price)
|
updated = replace(self, price=price)
|
||||||
updated._ensure_valid_state()
|
updated._ensure_valid_state()
|
||||||
return updated.raise_event(
|
return updated.apply_event(
|
||||||
ClassifiedAdPriceUpdated(id=self.id.value, price=price.amount)
|
ClassifiedAdPriceUpdated(id=self.id.value, price=price.amount)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ def test_classified_ad_is_instance_of_entity():
|
|||||||
assert isinstance(ad, Entity)
|
assert isinstance(ad, Entity)
|
||||||
|
|
||||||
|
|
||||||
def test_classified_ad_can_use_entity_raise_event():
|
def test_classified_ad_can_use_entity_apply_event():
|
||||||
ad = ClassifiedAd(
|
ad = ClassifiedAd(
|
||||||
id=ClassifiedAdId(value=uuid4()),
|
id=ClassifiedAdId(value=uuid4()),
|
||||||
_ownerId=UserId(value=uuid4()),
|
_ownerId=UserId(value=uuid4()),
|
||||||
@@ -258,7 +258,7 @@ def test_classified_ad_can_use_entity_raise_event():
|
|||||||
)
|
)
|
||||||
event = ClassifiedAdSentForReview(id=ad.id.value)
|
event = ClassifiedAdSentForReview(id=ad.id.value)
|
||||||
|
|
||||||
updated_ad = ad.raise_event(event)
|
updated_ad = ad.apply_event(event)
|
||||||
|
|
||||||
assert updated_ad.get_changes() == (ad.get_changes()[0], event)
|
assert updated_ad.get_changes() == (ad.get_changes()[0], event)
|
||||||
assert len(ad.get_changes()) == 1
|
assert len(ad.get_changes()) == 1
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from domain.marketplace.domain_event import (
|
|||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class TestEntity(Entity):
|
class TestEntity(Entity):
|
||||||
__test__ = False
|
__test__ = False
|
||||||
_events: tuple[DomainEvent, ...] = ()
|
_changes: tuple[DomainEvent, ...] = ()
|
||||||
|
|
||||||
|
|
||||||
def test_entity_creation():
|
def test_entity_creation():
|
||||||
@@ -20,20 +20,20 @@ def test_entity_creation():
|
|||||||
assert entity.get_changes() == ()
|
assert entity.get_changes() == ()
|
||||||
|
|
||||||
|
|
||||||
def test_raise_event_returns_new_instance_with_event():
|
def test_apply_event_returns_new_instance_with_event():
|
||||||
entity = TestEntity()
|
entity = TestEntity()
|
||||||
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||||
|
|
||||||
new_entity = entity.raise_event(event)
|
new_entity = entity.apply_event(event)
|
||||||
|
|
||||||
assert new_entity.get_changes() == (event,)
|
assert new_entity.get_changes() == (event,)
|
||||||
|
|
||||||
|
|
||||||
def test_raise_event_does_not_mutate_original():
|
def test_apply_event_does_not_mutate_original():
|
||||||
entity = TestEntity()
|
entity = TestEntity()
|
||||||
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||||
|
|
||||||
entity.raise_event(event)
|
entity.apply_event(event)
|
||||||
|
|
||||||
assert entity.get_changes() == ()
|
assert entity.get_changes() == ()
|
||||||
|
|
||||||
@@ -43,8 +43,8 @@ def test_multiple_events_accumulate():
|
|||||||
event1 = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
event1 = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||||
event2 = ClassifiedAdSentForReview(id=uuid4())
|
event2 = ClassifiedAdSentForReview(id=uuid4())
|
||||||
|
|
||||||
entity = entity.raise_event(event1)
|
entity = entity.apply_event(event1)
|
||||||
entity = entity.raise_event(event2)
|
entity = entity.apply_event(event2)
|
||||||
|
|
||||||
assert entity.get_changes() == (event1, event2)
|
assert entity.get_changes() == (event1, event2)
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ def test_multiple_events_accumulate():
|
|||||||
def test_clear_changes_returns_instance_with_empty_events():
|
def test_clear_changes_returns_instance_with_empty_events():
|
||||||
entity = TestEntity()
|
entity = TestEntity()
|
||||||
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||||
entity = entity.raise_event(event)
|
entity = entity.apply_event(event)
|
||||||
|
|
||||||
cleared = entity.clear_changes()
|
cleared = entity.clear_changes()
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ def test_clear_changes_returns_instance_with_empty_events():
|
|||||||
def test_clear_changes_does_not_mutate_original():
|
def test_clear_changes_does_not_mutate_original():
|
||||||
entity = TestEntity()
|
entity = TestEntity()
|
||||||
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||||
entity = entity.raise_event(event)
|
entity = entity.apply_event(event)
|
||||||
|
|
||||||
entity.clear_changes()
|
entity.clear_changes()
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ def test_clear_changes_does_not_mutate_original():
|
|||||||
def test_get_changes_returns_tuple():
|
def test_get_changes_returns_tuple():
|
||||||
entity = TestEntity()
|
entity = TestEntity()
|
||||||
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||||
entity = entity.raise_event(event)
|
entity = entity.apply_event(event)
|
||||||
|
|
||||||
changes = entity.get_changes()
|
changes = entity.get_changes()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user