From b8507e8941b40c68aba046e4c0971f02b50de8c0 Mon Sep 17 00:00:00 2001 From: Paul de Raaij Date: Wed, 29 Jul 2026 02:15:40 -0400 Subject: [PATCH] feat: raise ClassifiedAdSentForReview event in request_to_publish --- domain/marketplace/classified_ad.py | 6 +++++- tests/test_classified_ad.py | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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(