///////
Search
☀️

3일차 힌트

개요

3일차에 구현해야 할 내용은 댓글 기능 중, 삭제에 대한 내용입니다.

댓글 삭제 테스트 코드

Controller

성공하는 경우(1가지)

댓글 삭제 성공
/api/v1/posts/1/comments/1에 DELETE 요청 시, 정상적으로 수행하며 202를 리턴합니다.

실패하는 경우(가지)

댓글 삭제 실패(1) : 인증 실패
인증되지 않은 상태이며, postService에 삭제 요청을 보내면 INVALID_PERMISSION 에러를 던집니다.
/api/v1/posts/1/comments/1에 DELETE 요청 시, 권한없음 401을 반환합니다.
댓글 삭제 실패(2) : 작성자 불일치
인증된 상태이며, postService에 삭제 요청을 보내면 INVALID_PERMISSION 를 리턴합니다.
/api/v1/posts/1/comments/1에 DELETE 요청 시, 결과 상태값이 미리 정의한 INVALID_PERMISSION 값과 일치함을 확인합니다.
댓글 삭제 실패(3) : 데이터베이스 에러
인증된 상태이며, postService에 삭제 요청을 보내면 DATABASE_ERROR 를 리턴합니다.
/api/v1/posts/1/comments/1에 DELETE 요청 시, 결과 상태값이 미리 정의한 DATABASE_ERROR 값과 일치함을 확인합니다.

Service

실패하는 경우(2가지)

댓글 삭제 실패(1) : 유저 존재하지 않음
테스트에 사용하기 위해 정의한 객체를 사용합니다.
위의 정의한 객체의 commentId로 댓글이 있는지 조회해보면, 해당하는 댓글은 있지만 userName으로 조회된 User 정보는 없습니다.
postService에서 삭제 요청 시, assertThrows로 에러를 던져주고, exception이 발생한 에러코드는 USERNAME_NOT_FOUND 값과 동일함을 확인합니다.
댓글 삭제 실패 (2): 댓글이 존재하지 않음
테스트에 사용하기 위해 정의한 객체를 사용합니다.
위의 정의한 객체의 commentId로 댓글이 있는지 조회해보면, 해당하는 댓글이 존재하지 않습니다.
postService에서 삭제 요청 시, assertThrows로 에러를 던져주고, exception이 발생한 에러코드는 COMMENT_NOT_FOUND 값과 동일함을 확인합니다.