개요
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 값과 동일함을 확인합니다.