@@ -47,6 +47,9 @@ class RoomServiceTest {
4747 @ Mock
4848 private StudyRoomProperties properties ;
4949
50+ @ Mock
51+ private RoomRedisService roomRedisService ;
52+
5053 @ InjectMocks
5154 private RoomService roomService ;
5255
@@ -141,14 +144,16 @@ void joinRoom_Success() {
141144 given (roomRepository .findByIdWithLock (1L )).willReturn (Optional .of (testRoom ));
142145 given (userRepository .findById (2L )).willReturn (Optional .of (testUser ));
143146 given (roomMemberRepository .findByRoomIdAndUserId (1L , 2L )).willReturn (Optional .empty ());
144- given (roomMemberRepository . save ( any ( RoomMember . class ))) .willReturn (testMember );
147+ given (roomRedisService . getRoomUserCount ( 1L )) .willReturn (0L ); // Redis 카운트
145148
146149 // when
147150 RoomMember joinedMember = roomService .joinRoom (1L , null , 2L );
148151
149152 // then
150153 assertThat (joinedMember ).isNotNull ();
151- verify (roomMemberRepository , times (1 )).save (any (RoomMember .class ));
154+ assertThat (joinedMember .getRole ()).isEqualTo (RoomRole .VISITOR );
155+ verify (roomRedisService , times (1 )).enterRoom (2L , 1L ); // Redis 입장 확인
156+ verify (roomMemberRepository , never ()).save (any (RoomMember .class )); // DB 저장 안됨!
152157 }
153158
154159 @ Test
@@ -178,6 +183,7 @@ void joinRoom_WrongPassword() {
178183 true // useWebRTC
179184 );
180185 given (roomRepository .findByIdWithLock (1L )).willReturn (Optional .of (privateRoom ));
186+ given (roomRedisService .getRoomUserCount (1L )).willReturn (0L ); // Redis 카운트
181187
182188 // when & then
183189 assertThatThrownBy (() -> roomService .joinRoom (1L , "wrong" , 1L ))
@@ -189,15 +195,13 @@ void joinRoom_WrongPassword() {
189195 @ DisplayName ("방 나가기 - 성공" )
190196 void leaveRoom_Success () {
191197 // given
192- // TODO: Redis 통합 후 온라인 상태 체크 추가 예정
193198 given (roomRepository .findById (1L )).willReturn (Optional .of (testRoom ));
194- given (roomMemberRepository .findByRoomIdAndUserId (1L , 1L )).willReturn (Optional .of (testMember ));
195199
196200 // when
197201 roomService .leaveRoom (1L , 1L );
198202
199203 // then
200- verify (roomMemberRepository , times (1 )).findByRoomIdAndUserId (1L , 1L );
204+ verify (roomRedisService , times (1 )).exitRoom (1L , 1L ); // Redis 퇴장 확인
201205 }
202206
203207 @ Test
@@ -308,15 +312,14 @@ void updateRoomSettings_NotOwner() {
308312 void terminateRoom_Success () {
309313 // given
310314 given (roomRepository .findById (1L )).willReturn (Optional .of (testRoom ));
311- // disconnectAllMembers는 더 이상 호출되지 않음 (Redis로 이관 예정)
315+ given ( roomRedisService . getRoomUsers ( 1L )). willReturn ( java . util . Set . of ()); // 온라인 사용자 없음
312316
313317 // when
314318 roomService .terminateRoom (1L , 1L );
315319
316320 // then
317321 assertThat (testRoom .getStatus ()).isEqualTo (RoomStatus .TERMINATED );
318322 assertThat (testRoom .isActive ()).isFalse ();
319- // verify 제거: disconnectAllMembers는 더 이상 호출되지 않음
320323 }
321324
322325 @ Test
@@ -370,13 +373,12 @@ void kickMember_Success() {
370373
371374 given (roomMemberRepository .findByRoomIdAndUserId (1L , 1L )).willReturn (Optional .of (hostMember ));
372375 given (roomMemberRepository .findByRoomIdAndUserId (1L , 2L )).willReturn (Optional .of (targetMember ));
373- given (roomRepository .findById (1L )).willReturn (Optional .of (testRoom ));
374376
375377 // when
376378 roomService .kickMember (1L , 2L , 1L );
377379
378380 // then
379- verify (roomMemberRepository , times (1 )).findByRoomIdAndUserId ( 1L , 2L );
381+ verify (roomRedisService , times (1 )).exitRoom ( 2L , 1L ); // Redis 퇴장 확인
380382 }
381383
382384 @ Test
0 commit comments