-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create endpoint with the path: POST /organizator-api/events/update/<event_id>
- Loading branch information
Showing
13 changed files
with
359 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
from django.contrib import admin | ||
|
||
from app.events.infrastructure.persistance.models.orm_event import ORMEvent as Event | ||
|
||
admin.site.register(Event) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
import uuid | ||
from datetime import timezone, datetime | ||
|
||
from app.events.infrastructure.repository_factories import EventRepositoryFactory | ||
from app.events.domain.models.event import Event | ||
from app.events.application.requests import UpdateEventRequest | ||
|
||
|
||
class UpdateEventUseCase: | ||
def __init__(self) -> None: | ||
self.event_repository = EventRepositoryFactory.create() | ||
|
||
def execute(self, event_id: uuid.UUID, event: UpdateEventRequest) -> Event: | ||
original_event = self.event_repository.get(event_id) | ||
new_event = Event( | ||
id=event_id, | ||
name=event.name if event.name else original_event.name, | ||
description=event.description | ||
if event.description | ||
else original_event.description, | ||
url=event.url if event.url else original_event.url, | ||
start_date=event.start_date | ||
if event.start_date | ||
else original_event.start_date, | ||
end_date=event.end_date if event.end_date else original_event.end_date, | ||
location=event.location if event.location else original_event.location, | ||
header_image=event.header_image | ||
if event.header_image | ||
else original_event.header_image, | ||
created_at=original_event.created_at, | ||
updated_at=datetime.now(tz=timezone.utc), | ||
) | ||
|
||
self.event_repository.update(new_event) | ||
|
||
return new_event |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
68 changes: 68 additions & 0 deletions
68
organizator_api/tests/events/domain/use_cases/test_update_event_use_case.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
import uuid | ||
from datetime import datetime | ||
|
||
from app.events.application.requests import UpdateEventRequest | ||
from app.events.domain.use_cases.update_event_use_case import UpdateEventUseCase | ||
from tests.events.domain.EventFactory import EventFactory | ||
from tests.api_tests import ApiTests | ||
|
||
|
||
class TestUpdateEventUseCase(ApiTests): | ||
def setUp(self) -> None: | ||
super().setUp() | ||
self.event_repository.clear() | ||
event = EventFactory().create() | ||
event2 = EventFactory().create( | ||
new_id=uuid.UUID("fb95bfb6-3361-4628-8037-999d58b7183a"), | ||
name="HackUPC 2022", | ||
) | ||
self.event_repository.create(event) | ||
self.event_repository.create(event2) | ||
|
||
def test__given_a_update_event_request_with_only_name__when_update_an_event_with_the_data__then_the_event_is_updated( | ||
self, | ||
) -> None: | ||
# Given | ||
new_event = UpdateEventRequest( | ||
name="HackUPC 2021", | ||
) | ||
|
||
# When | ||
event = UpdateEventUseCase().execute( | ||
uuid.UUID("fb95bfb6-3361-4628-8037-999d58b7183a"), new_event | ||
) | ||
|
||
# Then | ||
self.assertEqual(event.name, "HackUPC 2021") | ||
|
||
def test__given_a_update_event_request_with_all_data__when_update_an_event_with_the_data__then_the_event_is_updated( | ||
self, | ||
) -> None: | ||
# Given | ||
new_event = UpdateEventRequest( | ||
name="HackUPC 2021", | ||
description="Hackathon in Barcelona 2021", | ||
url="https://2021.hackupc.com", | ||
start_date=datetime.strptime("2021-10-15T16:00:00Z", "%Y-%m-%dT%H:%M:%SZ"), | ||
end_date=datetime.strptime("2021-10-17T16:00:00Z", "%Y-%m-%dT%H:%M:%SZ"), | ||
location="The best city in the world", | ||
) | ||
|
||
# When | ||
event = UpdateEventUseCase().execute( | ||
uuid.UUID("fb95bfb6-3361-4628-8037-999d58b7183a"), new_event | ||
) | ||
|
||
# Then | ||
self.assertEqual(event.name, "HackUPC 2021") | ||
self.assertEqual(event.description, "Hackathon in Barcelona 2021") | ||
self.assertEqual(event.url, "https://2021.hackupc.com") | ||
self.assertEqual( | ||
event.start_date, | ||
datetime.strptime("2021-10-15T16:00:00Z", "%Y-%m-%dT%H:%M:%SZ"), | ||
) | ||
self.assertEqual( | ||
event.end_date, | ||
datetime.strptime("2021-10-17T16:00:00Z", "%Y-%m-%dT%H:%M:%SZ"), | ||
) | ||
self.assertEqual(event.location, "The best city in the world") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.