Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Chat] 채팅방에서 유저 추방하기 #291

Merged
merged 11 commits into from
Nov 15, 2024

Conversation

minisundev
Copy link
Member

@minisundev minisundev commented Nov 13, 2024

#️⃣연관된 이슈

📝작업 내용

  • 채팅방에서 방장이 유저를 내보내는 기능을 구현했습니다

💬리뷰 요구사항(선택)

이 부분 테스트를 원래는 다음과 같이 어떤 에러가 나는지 명시하고 있었습니다

test("방장이 아닌 사용자가 추방을 시도하면 예외가 발생해야 한다") {
      // Given
      val chatRoomId = ContextTest.TEST_ROOM_ID
      val userId = "non_owner_user"
      val expelUserId = "user_to_expel"
      val request = ExpelChatRoomRequest(chatRoomId, expelUserId)

      // 예외 모킹 시 예외 코드 지정
      every { accessVerifier.verifyChatRoomOwner(chatRoomId, userId) } throws GlobalException(ErrorCode.FORBIDDEN_CHATROOM)

      // When & Then
      val exception =
        shouldThrow<GlobalException> {
          chatRoomService.expelFromChatRoom(request, userId)
        }
      exception.getErrorCode() shouldBe ErrorCode.FORBIDDEN_CHATROOM // 예외 코드 확인
    }

자꾸 MockException이 떠서

java.lang.AssertionError: Expected exception kpring.chat.global.exception.GlobalException but a MockKException was thrown instead.
	at kpring.chat.chatroom.ChatRoomServiceTest$1$6$2.invokeSuspend(ChatRoomServiceTest.kt:291)

어떤 에러든 발생하면 무조건 성공하는 걸로 했는데 다른 해결방법이 있는지 모르겠습니다

test("방장이 아닌 사용자가 추방을 시도하면 예외가 발생해야 한다") {
      // Given
      val chatRoomId = ContextTest.TEST_ROOM_ID
      val userId = "non_owner_user"
      val expelUserId = "user_to_expel"
      val request = ExpelChatRoomRequest(chatRoomId, expelUserId)

      // When & Then
      shouldThrow<Throwable> {
        // 예외 발생 시도
        chatRoomService.expelFromChatRoom(request, userId)
      }
    }

제가 Service에서 사용하는 다른 Util이나 Repository의 메서드 결과를 명시하지 않아서 MockException이 발생하는 것이었습니다!
그래서 다음과 같이 수정했는데
저렇게 모든것을 Mock으로 처리하는 테스트가 무슨 의미가 있나 싶습니다

test("방장이 아닌 사용자가 추방을 시도하면 예외가 발생해야 한다") {
      // Given
      val chatRoomId = ContextTest.TEST_ROOM_ID
      val ownerId = "ownerId"
      val userId = "non_owner_user"
      val expelUserId = "user_to_expel"
      val chatRoom =
        ChatRoom(
          id = chatRoomId,
          ownerId = ownerId,
          members = mutableSetOf(ownerId, expelUserId),
        )
      val request = ExpelChatRoomRequest(chatRoomId, expelUserId)

      every { chatRoomRepository.findById(any()) } returns Optional.of(chatRoom)
      every { accessVerifier.verifyChatRoomOwner(expelUserId, userId) } throws GlobalException(ErrorCode.FORBIDDEN_CHATROOM)

      // When & Then
      shouldThrow<GlobalException>({
        chatRoomService.expelFromChatRoom(request, userId)
      })
    }

@minisundev minisundev added enhancement 추가 기능 Chat 채팅 관련 기능 labels Nov 13, 2024
@minisundev minisundev requested a review from a team November 13, 2024 10:58
@minisundev minisundev self-assigned this Nov 13, 2024
@minisundev minisundev changed the title Feat/expel from chatroom [Chat] 채팅방에서 유저 추방하기 Nov 13, 2024
@minisundev minisundev merged commit fcce768 into kSideProject:dev Nov 15, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Chat 채팅 관련 기능 enhancement 추가 기능
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

내보내기 로직 구현
1 participant