Files
python-fun/tests/test_entity.py

80 lines
1.9 KiB
Python

from dataclasses import dataclass
from uuid import uuid4
from domain.framework.entity import Entity
from domain.marketplace.domain_event import (
ClassifiedAdCreated,
ClassifiedAdSentForReview,
DomainEvent,
)
@dataclass(frozen=True)
class TestEntity(Entity):
__test__ = False
_changes: tuple[DomainEvent, ...] = ()
def test_entity_creation():
entity = TestEntity()
assert entity.get_changes() == ()
def test_apply_event_returns_new_instance_with_event():
entity = TestEntity()
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
new_entity = entity.apply_event(event)
assert new_entity.get_changes() == (event,)
def test_apply_event_does_not_mutate_original():
entity = TestEntity()
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
entity.apply_event(event)
assert entity.get_changes() == ()
def test_multiple_events_accumulate():
entity = TestEntity()
event1 = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
event2 = ClassifiedAdSentForReview(id=uuid4())
entity = entity.apply_event(event1)
entity = entity.apply_event(event2)
assert entity.get_changes() == (event1, event2)
def test_clear_changes_returns_instance_with_empty_events():
entity = TestEntity()
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
entity = entity.apply_event(event)
cleared = entity.clear_changes()
assert cleared.get_changes() == ()
def test_clear_changes_does_not_mutate_original():
entity = TestEntity()
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
entity = entity.apply_event(event)
entity.clear_changes()
assert entity.get_changes() == (event,)
def test_get_changes_returns_tuple():
entity = TestEntity()
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
entity = entity.apply_event(event)
changes = entity.get_changes()
assert isinstance(changes, tuple)