11package com .somemore .domains .interestcenter .handler ;
22
3+ import com .somemore .center .domain .NEWCenter ;
4+ import com .somemore .center .repository .NEWCenterRepository ;
35import com .somemore .domains .interestcenter .event .domain .InterestCenterCreateRecruitBoardEvent ;
46import com .somemore .domains .interestcenter .event .handler .CreateRecruitBoardHandlerImpl ;
57import com .somemore .domains .interestcenter .usecase .InterestCenterQueryUseCase ;
68import com .somemore .domains .recruitboard .event .CreateRecruitBoardEvent ;
9+ import com .somemore .global .auth .oauth .domain .OAuthProvider ;
710import com .somemore .global .common .event .ServerEventPublisher ;
811import com .somemore .support .IntegrationTestSupport ;
12+ import com .somemore .user .domain .User ;
13+ import com .somemore .user .domain .UserRole ;
14+ import com .somemore .user .dto .UserAuthInfo ;
15+ import com .somemore .user .repository .user .UserRepository ;
16+ import com .somemore .volunteer .domain .NEWVolunteer ;
17+ import com .somemore .volunteer .repository .NEWVolunteerRepository ;
918import org .junit .jupiter .api .Test ;
1019import org .mockito .Mockito ;
1120import org .springframework .beans .factory .annotation .Autowired ;
1221import org .springframework .boot .test .mock .mockito .MockBean ;
1322import org .springframework .transaction .annotation .Transactional ;
1423
15- import java .util .List ;
16- import java .util .UUID ;
24+ import java .util .Collections ;
1725
1826import static org .mockito .ArgumentMatchers .argThat ;
19- import static org .mockito .Mockito .*;
27+ import static org .mockito .Mockito .times ;
28+ import static org .mockito .Mockito .verify ;
29+ import static org .mockito .Mockito .when ;
2030
2131@ Transactional
2232class CreateRecruitBoardHandlerImplTest extends IntegrationTestSupport {
2333
2434 @ Autowired
2535 private CreateRecruitBoardHandlerImpl createRecruitBoardHandler ;
2636
37+ @ Autowired
38+ private UserRepository userRepository ;
39+
40+ @ Autowired
41+ private NEWVolunteerRepository volunteerRepository ;
42+
43+ @ Autowired
44+ private NEWCenterRepository centerRepository ;
45+
2746 @ MockBean
2847 private InterestCenterQueryUseCase interestCenterQueryUseCase ;
2948
@@ -33,33 +52,40 @@ class CreateRecruitBoardHandlerImplTest extends IntegrationTestSupport {
3352 @ Test
3453 void handle_ShouldPublishEventsForVolunteers () {
3554 // given
36- UUID centerId = UUID .randomUUID ();
37- UUID volunteerId1 = UUID .randomUUID ();
38- UUID volunteerId2 = UUID .randomUUID ();
39- UUID volunteerId3 = UUID .randomUUID ();
55+ UserAuthInfo volunteerUserAuthInfo = UserAuthInfo .createForOAuth (OAuthProvider .NAVER );
56+ User volunteerUser = User .of (volunteerUserAuthInfo , UserRole .VOLUNTEER );
57+ userRepository .save (volunteerUser );
58+
59+ UserAuthInfo centerUserAuthInfo = UserAuthInfo .createForOAuth (OAuthProvider .NAVER );
60+ User centerUser = User .of (centerUserAuthInfo , UserRole .CENTER );
61+ userRepository .save (centerUser );
62+
63+ NEWVolunteer volunteer = NEWVolunteer .createDefault (volunteerUser .getId ());
64+ volunteerRepository .save (volunteer );
65+
66+ NEWCenter center = NEWCenter .createDefault (centerUser .getId ());
67+ centerRepository .save (center );
68+
4069 Long recruitBoardId = 123L ;
4170
42- List <UUID > volunteerIds = List .of (volunteerId1 , volunteerId2 , volunteerId3 );
43- when (interestCenterQueryUseCase .getVolunteerIdsByCenterId (centerId )).thenReturn (volunteerIds );
71+ when (interestCenterQueryUseCase .getVolunteerIdsByCenterId (center .getId ())).thenReturn (Collections .singletonList (volunteer .getId ()));
4472
4573 CreateRecruitBoardEvent createRecruitBoardEvent = CreateRecruitBoardEvent .builder ()
46- .centerId (centerId )
74+ .centerId (center . getId () )
4775 .recruitBoardId (recruitBoardId )
4876 .build ();
4977
5078 // when
5179 createRecruitBoardHandler .handle (createRecruitBoardEvent );
5280
5381 // then
54- verify (serverEventPublisher , times (volunteerIds .size ())).publish (Mockito .any (InterestCenterCreateRecruitBoardEvent .class ));
55-
56- for (UUID volunteerId : volunteerIds ) {
57- verify (serverEventPublisher ).publish (argThat (event ->
58- event instanceof InterestCenterCreateRecruitBoardEvent &&
59- ((InterestCenterCreateRecruitBoardEvent ) event ).getCenterId ().equals (centerId ) &&
60- ((InterestCenterCreateRecruitBoardEvent ) event ).getVolunteerId ().equals (volunteerId ) &&
61- ((InterestCenterCreateRecruitBoardEvent ) event ).getRecruitBoardId ().equals (recruitBoardId )
62- ));
63- }
82+ verify (serverEventPublisher , times (1 )).publish (Mockito .any (InterestCenterCreateRecruitBoardEvent .class ));
83+
84+ verify (serverEventPublisher ).publish (argThat (event ->
85+ event instanceof InterestCenterCreateRecruitBoardEvent &&
86+ ((InterestCenterCreateRecruitBoardEvent ) event ).getRecruitBoardId ().equals (recruitBoardId ) &&
87+ ((InterestCenterCreateRecruitBoardEvent ) event ).getVolunteerId ().equals (volunteer .getId ())
88+ ));
89+
6490 }
6591}
0 commit comments