Skip to content

Commit

Permalink
캘린더 업데이트 기능 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
qodot committed Sep 22, 2023
1 parent 31d11d4 commit 637d1c7
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/appl/container.py
@@ -1,5 +1,6 @@
from src.appl.create_calendar import CreateCalendar
from src.appl.i_container import IContainer
from src.appl.update_calendar import UpdateCalendar
from src.infra.repo.sa import SA
from src.infra.repo.sa_calendar_repo import SACalendarRepo
from src.infra.repo.sa_context import SAContext
Expand All @@ -16,6 +17,9 @@ def compose(self) -> None:
self.register(
CreateCalendar(self.resolve(SAContext), self.resolve(SACalendarRepo))
)
self.register(
UpdateCalendar(self.resolve(SAContext), self.resolve(SACalendarRepo))
)


container = Container()
Expand Down
18 changes: 18 additions & 0 deletions src/appl/update_calendar.py
@@ -0,0 +1,18 @@
import datetime
import uuid

from src.domain.repo.i_calendar_repo import ICalendarRepo
from src.domain.repo.i_db_context import IDBContext


class UpdateCalendar:
def __init__(self, db_context: IDBContext, calendar_repo: ICalendarRepo) -> None:
self.db_context = db_context
self.calendar_repo = calendar_repo

def run(
self, calendar_id: uuid.UUID, name: str, birthday: datetime.date, lifespan: int
) -> None:
with self.db_context.begin_tx():
calendar = self.calendar_repo.get_or_error(calendar_id)
calendar.update_basic_info(name, birthday, lifespan)
28 changes: 28 additions & 0 deletions test/appl/test_update_calendar.py
@@ -0,0 +1,28 @@
import datetime
from unittest.mock import MagicMock

from src.appl.update_calendar import UpdateCalendar
from src.domain.entity.calendar import Calendar
from src.domain.repo.i_calendar_repo import ICalendarRepo
from src.domain.repo.i_db_context import IDBContext


class TestUpdateCalendar:
def test_run(self):
calendar = self._create_calendar()
db_context = MagicMock(spec=IDBContext)
calendar_repo = MagicMock(spec=ICalendarRepo)
calendar_repo.get_or_error.return_value = calendar
command = UpdateCalendar(db_context, calendar_repo)

name = "뉴고도"
birthday = datetime.date(2000, 6, 21)
lifespan = 100
command.run(calendar.id, name, birthday, lifespan)

assert calendar.name == name
assert calendar.birthday == birthday
assert calendar.lifespan == lifespan

def _create_calendar(self) -> Calendar:
return Calendar.create("고도", datetime.date(1988, 6, 21), 80)

0 comments on commit 637d1c7

Please sign in to comment.