feat: add FastAPI, Entity base class, and health check endpoint
This commit is contained in:
79
tests/test_entity.py
Normal file
79
tests/test_entity.py
Normal file
@@ -0,0 +1,79 @@
|
||||
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
|
||||
_events: tuple[DomainEvent, ...] = ()
|
||||
|
||||
|
||||
def test_entity_creation():
|
||||
entity = TestEntity()
|
||||
assert entity.get_changes() == ()
|
||||
|
||||
|
||||
def test_raise_event_returns_new_instance_with_event():
|
||||
entity = TestEntity()
|
||||
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||
|
||||
new_entity = entity.raise_event(event)
|
||||
|
||||
assert new_entity.get_changes() == (event,)
|
||||
|
||||
|
||||
def test_raise_event_does_not_mutate_original():
|
||||
entity = TestEntity()
|
||||
event = ClassifiedAdCreated(id=uuid4(), owner_id=uuid4())
|
||||
|
||||
entity.raise_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.raise_event(event1)
|
||||
entity = entity.raise_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.raise_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.raise_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.raise_event(event)
|
||||
|
||||
changes = entity.get_changes()
|
||||
|
||||
assert isinstance(changes, tuple)
|
||||
Reference in New Issue
Block a user