Skip to content

Commit c2598d9

Browse files
committed
test: event controller, service test code added
1 parent ab4f4ff commit c2598d9

File tree

2 files changed

+105
-4
lines changed

2 files changed

+105
-4
lines changed

src/test/java/com/server/domain/event/controller/EventControllerTest.java

+37
Original file line numberDiff line numberDiff line change
@@ -264,4 +264,41 @@ private void injectSecretKey(EventController controller, String secretKey) {
264264
}
265265
}
266266

267+
@Test
268+
@DisplayName("장르별 이벤트 정보 가져오기 성공 테스트")
269+
void getEventsByGenreSuccessTest() {
270+
// Given
271+
String genre = "musical";
272+
List<EventDto> eventsByGenre = new ArrayList<>();
273+
eventsByGenre.add(EventDto.builder().ranking(1).genre("뮤지컬").title("Sample Musical")
274+
.place("LG Arts Center").startDate(LocalDate.now())
275+
.endDate(LocalDate.now().plusDays(30)).thumbnail("http://example.com/musical.jpg")
276+
.build());
277+
278+
// 장르별 이벤트를 반환하는 서비스 메서드를 mock
279+
when(eventService.getEventsByGenre(genre)).thenReturn(eventsByGenre);
280+
281+
// When
282+
ApiResponseDto<List<EventDto>> response = eventController.getEventsByGenre(genre);
283+
284+
// Then
285+
assertEquals(HttpStatus.OK.value(), response.getStatus());
286+
assertEquals(eventsByGenre.size(), response.getData().size());
287+
assertEquals(eventsByGenre.get(0).getTitle(), response.getData().get(0).getTitle());
288+
assertEquals(eventsByGenre.get(0).getGenre(), response.getData().get(0).getGenre());
289+
}
290+
291+
@Test
292+
@DisplayName("장르별 이벤트 정보 가져오기 실패 테스트 - 잘못된 장르")
293+
void getEventsByGenreFailureTest() {
294+
// Given
295+
String invalidGenre = "invalidGenre"; // 잘못된 장르
296+
297+
// When & Then
298+
// 잘못된 장르가 들어오면 IllegalArgumentException이 발생해야 함
299+
assertThrows(IllegalArgumentException.class, () -> {
300+
eventController.getEventsByGenre(invalidGenre);
301+
});
302+
}
303+
267304
}

src/test/java/com/server/domain/event/service/EventServiceTest.java

+68-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.ArrayList;
2626
import java.util.Iterator;
2727
import java.util.List;
28+
import java.util.Optional;
2829

2930
import static org.junit.jupiter.api.Assertions.*;
3031
import static org.mockito.ArgumentMatchers.any;
@@ -50,7 +51,6 @@ public void setCustomDirPath(String customDirPath) {
5051
this.customDirPath = customDirPath;
5152
}
5253

53-
/*@Override
5454
public List<EventDto> saveEvents() throws Exception {
5555
// Override the path with our custom path
5656
List<EventDto> eventDtos = new ArrayList<>();
@@ -95,7 +95,7 @@ public List<EventDto> saveEvents() throws Exception {
9595
}
9696
}
9797
return eventDtos;
98-
}*/
98+
}
9999
}
100100

101101
private TestEventService eventService;
@@ -233,7 +233,7 @@ void parseDateRangeInvalidFormatTest() {
233233
assertNull(dates[1]);
234234
}
235235

236-
/*@Test
236+
@Test
237237
@DisplayName("이벤트 저장 - 디렉토리 없을 때 테스트")
238238
void saveEventsDirectoryNotExistTest() throws Exception {
239239
// Given - 존재하지 않는 경로로 설정
@@ -295,5 +295,69 @@ void saveEventsTest(@TempDir Path tempDir) throws Exception {
295295
assertEquals("뮤지컬", result.get(1).getGenre());
296296

297297
verify(eventRepository, times(2)).save(any(Event.class));
298-
}*/
298+
}
299+
300+
301+
@Test
302+
@DisplayName("장르별 이벤트 조회 테스트")
303+
void getEventsByGenreTest() {
304+
// Given
305+
String genre = "concert";
306+
List<Event> concertEvents = new ArrayList<>();
307+
308+
// 이벤트 샘플 추가 (콘서트 장르)
309+
Event event1 = new Event();
310+
event1.setId(1L);
311+
event1.setRanking(1);
312+
event1.setGenre("콘서트");
313+
event1.setTitle("Sample Concert");
314+
event1.setPlace("Seoul Arena");
315+
event1.setStartDate(LocalDate.of(2025, 5, 1));
316+
event1.setEndDate(LocalDate.of(2025, 6, 1));
317+
event1.setThumbnail("http://example.com/image.jpg");
318+
319+
concertEvents.add(event1);
320+
321+
// 이벤트가 조회될 때 반환될 값 설정
322+
when(eventRepository.findByGenre("콘서트")).thenReturn(Optional.of((concertEvents)));
323+
324+
// When
325+
List<EventDto> result = eventService.getEventsByGenre(genre);
326+
327+
// Then
328+
assertEquals(1, result.size());
329+
assertEquals("Sample Concert", result.get(0).getTitle());
330+
assertEquals("콘서트", result.get(0).getGenre());
331+
assertEquals(LocalDate.of(2025, 5, 1), result.get(0).getStartDate());
332+
assertEquals(LocalDate.of(2025, 6, 1), result.get(0).getEndDate());
333+
334+
verify(eventRepository, times(1)).findByGenre("콘서트");
335+
}
336+
337+
@Test
338+
@DisplayName("지원하지 않는 장르 테스트")
339+
void getEventsByInvalidGenreTest() {
340+
// Given
341+
String genre = "invalid_genre"; // 존재하지 않는 장르
342+
343+
// When / Then
344+
assertThrows(IllegalArgumentException.class, () -> eventService.getEventsByGenre(genre));
345+
}
346+
347+
@Test
348+
@DisplayName("장르에 해당하는 이벤트가 없을 때 테스트")
349+
void getEventsByGenreNotFoundTest() {
350+
// Given
351+
String genre = "sports";
352+
when(eventRepository.findByGenre("스포츠")).thenReturn(Optional.of(new ArrayList<>())); // 스포츠 장르에 해당하는 이벤트가 없음
353+
354+
// When
355+
List<EventDto> result = eventService.getEventsByGenre(genre);
356+
357+
// Then
358+
assertTrue(result.isEmpty()); // 결과는 비어 있어야 함
359+
verify(eventRepository, times(1)).findByGenre("스포츠");
360+
}
361+
362+
299363
}

0 commit comments

Comments
 (0)