Skip to content

Commit b190ef5

Browse files
authored
chore: timeline 테스트 코드 작성 (#98)
* 타임라인 테스트 코드를 작성했습니다
1 parent e07579f commit b190ef5

2 files changed

Lines changed: 221 additions & 0 deletions

File tree

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
from datetime import datetime
2+
from typing import List
3+
4+
import pytest
5+
from sqlalchemy.orm import Session
6+
7+
from wacruit.src.apps.timeline.models import Timeline
8+
from wacruit.src.apps.timeline.models import TimelineCategory
9+
from wacruit.src.apps.timeline.models import TimelineGroupType
10+
from wacruit.src.apps.timeline.repositories import TimelineRepository
11+
from wacruit.src.apps.timeline.schemas import TimelineCategoryCreateUpdateRequest
12+
from wacruit.src.apps.timeline.schemas import TimelineCreateRequest
13+
from wacruit.src.apps.timeline.schemas import TimelineUpdateRequest
14+
from wacruit.src.apps.timeline.services import TimelineService
15+
from wacruit.src.apps.user.models import User
16+
from wacruit.src.database.connection import Transaction
17+
18+
19+
@pytest.fixture
20+
def timeline_repository(db_session: Session):
21+
return TimelineRepository(session=db_session, transaction=Transaction(db_session))
22+
23+
24+
@pytest.fixture
25+
def timeline_service(timeline_repository: TimelineRepository) -> TimelineService:
26+
return TimelineService(timeline_repository=timeline_repository)
27+
28+
29+
@pytest.fixture
30+
def timeline_category1(db_session: Session) -> TimelineCategory:
31+
timeline_category = TimelineCategory(title="친목")
32+
db_session.add(timeline_category)
33+
db_session.commit()
34+
return timeline_category
35+
36+
37+
@pytest.fixture
38+
def timeline_category2(db_session: Session) -> TimelineCategory:
39+
timeline_category = TimelineCategory(title="세미나")
40+
db_session.add(timeline_category)
41+
db_session.commit()
42+
return timeline_category
43+
44+
45+
@pytest.fixture
46+
def created_category_list(db_session: Session) -> List[TimelineCategory]:
47+
category_list = []
48+
for i in range(0, 5):
49+
timeline_category = TimelineCategory(title=f"카테고리 {i}")
50+
db_session.add(timeline_category)
51+
category_list.append(timeline_category)
52+
db_session.commit()
53+
return category_list
54+
55+
56+
@pytest.fixture
57+
def created_timeline(
58+
db_session: Session, timeline_category1: TimelineCategory
59+
) -> Timeline:
60+
timeline = Timeline(
61+
title="Created Timeline",
62+
group=TimelineGroupType.ROOKIE,
63+
category_id=timeline_category1.id,
64+
start_date=datetime(2025, 1, 1),
65+
end_date=datetime(2025, 1, 5),
66+
)
67+
db_session.add(timeline)
68+
db_session.commit()
69+
return timeline
70+
71+
72+
@pytest.fixture
73+
def created_timeline_list(
74+
db_session: Session, timeline_category1: TimelineCategory
75+
) -> List[Timeline]:
76+
timeline_list = []
77+
78+
for i in range(0, 5):
79+
timeline = Timeline(
80+
title=f"Created Timeline {i}",
81+
group=TimelineGroupType.ROOKIE,
82+
category_id=timeline_category1.id,
83+
start_date=datetime(2025, 1, 1),
84+
end_date=datetime(2025, 1, 5),
85+
)
86+
db_session.add(timeline)
87+
timeline_list.append(timeline)
88+
db_session.commit()
89+
return timeline_list
90+
91+
92+
@pytest.fixture
93+
def timeline_create_dto(timeline_category1: TimelineCategory) -> TimelineCreateRequest:
94+
return TimelineCreateRequest(
95+
title="New Timeline",
96+
group=TimelineGroupType.ROOKIE,
97+
category_id=timeline_category1.id,
98+
start_date=datetime(2025, 1, 1),
99+
end_date=datetime(2025, 1, 5),
100+
)
101+
102+
103+
@pytest.fixture
104+
def timeline_update_dto(timeline_category2: TimelineCategory) -> TimelineUpdateRequest:
105+
return TimelineUpdateRequest(
106+
title="Updated Timeline",
107+
group=TimelineGroupType.PROGRAMMER,
108+
category_id=timeline_category2.id,
109+
start_date=datetime(2025, 3, 1),
110+
end_date=datetime(2025, 3, 5),
111+
)
112+
113+
114+
@pytest.fixture
115+
def category_create_dto() -> TimelineCategoryCreateUpdateRequest:
116+
return TimelineCategoryCreateUpdateRequest(title="친목")
117+
118+
119+
@pytest.fixture
120+
def category_update_dto() -> TimelineCategoryCreateUpdateRequest:
121+
return TimelineCategoryCreateUpdateRequest(title="세미나")
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
from datetime import datetime
2+
from typing import List
3+
4+
import pytest
5+
6+
from wacruit.src.apps.timeline.exceptions import TimelineCategoryNotFoundException
7+
from wacruit.src.apps.timeline.exceptions import TimelineNotFoundException
8+
from wacruit.src.apps.timeline.models import Timeline
9+
from wacruit.src.apps.timeline.models import TimelineCategory
10+
from wacruit.src.apps.timeline.schemas import TimelineGroupType
11+
from wacruit.src.apps.timeline.services import TimelineService
12+
13+
14+
def test_create_category(timeline_service: TimelineService, category_create_dto):
15+
response = timeline_service.create_category(category_create_dto)
16+
17+
assert response.title == "친목"
18+
19+
20+
def test_update_category(
21+
timeline_service: TimelineService,
22+
timeline_category1: TimelineCategory,
23+
category_update_dto,
24+
):
25+
response = timeline_service.update_category(
26+
timeline_category1.id, category_update_dto
27+
)
28+
29+
assert response.title == "세미나"
30+
31+
32+
def test_get_all_categories(
33+
timeline_service: TimelineService, created_category_list: List[TimelineCategory]
34+
):
35+
response = timeline_service.get_all_categories()
36+
category_list = response.items
37+
38+
assert len(created_category_list) == len(category_list)
39+
for i in range(0, 5):
40+
assert category_list[i].title == f"카테고리 {i}"
41+
42+
43+
def test_delete_category(timeline_service: TimelineService, timeline_category1):
44+
created_id = timeline_category1.id
45+
timeline_service.delete_category(created_id)
46+
with pytest.raises(TimelineCategoryNotFoundException):
47+
timeline_service.delete_category(created_id)
48+
49+
50+
def test_create_timeline(timeline_service: TimelineService, timeline_create_dto):
51+
response = timeline_service.create_timeline(timeline_create_dto)
52+
53+
assert response.title == "New Timeline"
54+
assert response.group == TimelineGroupType.ROOKIE
55+
assert response.category.title == "친목"
56+
assert response.start_date == datetime(2025, 1, 1)
57+
assert response.end_date == datetime(2025, 1, 5)
58+
59+
60+
def test_update_timeline(
61+
timeline_service: TimelineService, created_timeline: Timeline, timeline_update_dto
62+
):
63+
response = timeline_service.update_timeline(
64+
created_timeline.id, timeline_update_dto
65+
)
66+
67+
assert response.title == "Updated Timeline"
68+
assert response.group == TimelineGroupType.PROGRAMMER
69+
assert response.category.title == "세미나"
70+
assert response.start_date == datetime(2025, 3, 1)
71+
assert response.end_date == datetime(2025, 3, 5)
72+
73+
74+
def test_get_all_timelines(
75+
timeline_service: TimelineService, created_timeline_list: List[Timeline]
76+
):
77+
response = timeline_service.get_all_timelines(TimelineGroupType.ROOKIE)
78+
timeline_list = response.items
79+
80+
assert len(timeline_list) == len(created_timeline_list)
81+
for i in range(0, 5):
82+
assert timeline_list[i].title == f"Created Timeline {i}"
83+
assert timeline_list[i].group == TimelineGroupType.ROOKIE
84+
assert timeline_list[i].category.title == "친목"
85+
assert timeline_list[i].start_date == datetime(2025, 1, 1)
86+
assert timeline_list[i].end_date == datetime(2025, 1, 5)
87+
88+
89+
def test_delete_timeline_success(
90+
timeline_service: TimelineService, created_timeline: Timeline
91+
):
92+
created_id = created_timeline.id
93+
timeline_service.delete_timeline(created_id)
94+
with pytest.raises(TimelineNotFoundException):
95+
timeline_service.get_timeline_by_id(created_id)
96+
97+
98+
def test_delete_timeline_not_found(timeline_service: TimelineService):
99+
with pytest.raises(TimelineNotFoundException):
100+
timeline_service.delete_timeline(999)

0 commit comments

Comments
 (0)