25
25
import java .util .ArrayList ;
26
26
import java .util .Iterator ;
27
27
import java .util .List ;
28
+ import java .util .Optional ;
28
29
29
30
import static org .junit .jupiter .api .Assertions .*;
30
31
import static org .mockito .ArgumentMatchers .any ;
@@ -50,7 +51,6 @@ public void setCustomDirPath(String customDirPath) {
50
51
this .customDirPath = customDirPath ;
51
52
}
52
53
53
- /*@Override
54
54
public List <EventDto > saveEvents () throws Exception {
55
55
// Override the path with our custom path
56
56
List <EventDto > eventDtos = new ArrayList <>();
@@ -95,7 +95,7 @@ public List<EventDto> saveEvents() throws Exception {
95
95
}
96
96
}
97
97
return eventDtos ;
98
- }*/
98
+ }
99
99
}
100
100
101
101
private TestEventService eventService ;
@@ -233,7 +233,7 @@ void parseDateRangeInvalidFormatTest() {
233
233
assertNull (dates [1 ]);
234
234
}
235
235
236
- /* @Test
236
+ @ Test
237
237
@ DisplayName ("이벤트 저장 - 디렉토리 없을 때 테스트" )
238
238
void saveEventsDirectoryNotExistTest () throws Exception {
239
239
// Given - 존재하지 않는 경로로 설정
@@ -295,5 +295,69 @@ void saveEventsTest(@TempDir Path tempDir) throws Exception {
295
295
assertEquals ("뮤지컬" , result .get (1 ).getGenre ());
296
296
297
297
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
+
299
363
}
0 commit comments