from decimal import Decimal from uuid import uuid4 from domain.marketplace.domain_event import ( ClassifiedAdCreated, ClassifiedAdPriceUpdated, ClassifiedAdSentForReview, ClassifiedAdTextUpdated, ClassifiedAdTitleChanged, DomainEvent, ) def test_classified_ad_created_creation(): event_id = uuid4() owner_id = uuid4() event = ClassifiedAdCreated(id=event_id, owner_id=owner_id) assert event.id == event_id assert event.owner_id == owner_id def test_classified_ad_title_changed_creation(): event_id = uuid4() event = ClassifiedAdTitleChanged(id=event_id, title="New Title") assert event.id == event_id assert event.title == "New Title" def test_classified_ad_text_updated_creation(): event_id = uuid4() event = ClassifiedAdTextUpdated(id=event_id, ad_text="Updated text") assert event.id == event_id assert event.ad_text == "Updated text" def test_classified_ad_price_updated_creation(): event_id = uuid4() event = ClassifiedAdPriceUpdated(id=event_id, price=Decimal("99.99")) assert event.id == event_id assert event.price == Decimal("99.99") def test_classified_ad_sent_for_review_creation(): event_id = uuid4() event = ClassifiedAdSentForReview(id=event_id) assert event.id == event_id def test_domain_event_isinstance_check(): event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4()) assert isinstance(event, DomainEvent) def test_domain_events_are_immutable(): event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4()) try: event.id = uuid4() # type: ignore assert False, "Should have raised FrozenInstanceError" except AttributeError: pass def test_domain_event_equality(): event_id = uuid4() event1 = ClassifiedAdSentForReview(id=event_id) event2 = ClassifiedAdSentForReview(id=event_id) assert event1 == event2