diff --git a/domain/marketplace/classified_ad.py b/domain/marketplace/classified_ad.py index babb5f8..0bc0242 100644 --- a/domain/marketplace/classified_ad.py +++ b/domain/marketplace/classified_ad.py @@ -10,6 +10,7 @@ from domain.marketplace.classified_ad_text import ClassifiedAdText from domain.marketplace.classified_ad_title import ClassifiedAdTitle from domain.marketplace.domain_event import ( ClassifiedAdPriceUpdated, + ClassifiedAdSentForReview, ClassifiedAdTextUpdated, ClassifiedAdTitleChanged, DomainEvent, @@ -48,7 +49,10 @@ class ClassifiedAd(Entity): def request_to_publish(self): self._ensure_valid_state() - return replace(self, state=ClassifiedAdState.PendingReview) + updated = replace(self, state=ClassifiedAdState.PendingReview) + return updated.raise_event( + ClassifiedAdSentForReview(id=self.id.value) + ) def set_title(self, title: ClassifiedAdTitle) -> ClassifiedAd: updated = replace(self, title=title) diff --git a/tests/test_classified_ad.py b/tests/test_classified_ad.py index 293e16e..683fc42 100644 --- a/tests/test_classified_ad.py +++ b/tests/test_classified_ad.py @@ -153,6 +153,12 @@ def test_request_to_publish_sets_state_to_pending_review(): assert published.state == ClassifiedAdState.PendingReview + changes = published.get_changes() + assert len(changes) == 1 + event = changes[0] + assert isinstance(event, ClassifiedAdSentForReview) + assert event.id == ad.id.value + def test_request_to_publish_fails_when_title_empty(): ad = ClassifiedAd(