개요
2일차에 구현해야 할 내용은 댓글 기능 중, 등록과 수정에 대한 내용입니다.
댓글 등록 테스트 코드
Controller
성공하는 경우(1가지)
•
댓글 작성 성공
◦
/api/v1/posts/1/comments에 POST요청 시, 성공 200를 리턴합니다.
실패하는 경우(2가지)
•
댓글 작성 실패(1) - 로그인 하지 않은 경우
◦
/api/v1/posts/1/comments에 POST요청 시, HttpStatus.UNAUTHORIZED 401을 리턴합니다.
•
댓글 작성 실패(2) - 게시물이 존재하지 않는 경우
◦
/api/v1/posts/1/comments에 POST요청 시, 미리 정의한 ERROR CODE POST_NOT_FOUND 를반환합니다.
Service
•
없음
댓글 수정 테스트 코드
Controller
성공하는 경우(1가지)
•
댓글 수정 성공
◦
테스트에 사용할 데이터들을 준비합니다. CommentModifyRequest, UserEntity, PostEntity, CommentEntity
◦
postService에 수정 요청을 보내면 미리 정의한 CommentEntity 를 리턴합니다.
◦
/api/v1/posts/1/comments/1에 PUT요청 시, 정상적으로 수행하며 202를 리턴합니다.
실패하는 경우(4가지)
•
댓글 수정 실패(1) : 인증 실패
◦
인증되지 않은 상태이며, CommentModifyRequest를 정의해줍니다.
◦
postService에 수정 요청을 보내면 INVALID_PERMISSION 를 리턴합니다.
◦
/api/v1/posts/1/comments/1에 PUT요청 시, 권한없음 401을 반환합니다.
•
댓글 수정 실패(2) : 작성자 불일치
◦
인증된 상태이며, CommentModifyRequest를 정의해줍니다.
◦
postService에 수정 요청을 보내면 INVALID_PERMISSION 를 리턴합니다.
◦
/api/v1/posts/1/comments/1 에PUT요청 시, 결과 상태값이 미리 정의한 INVALID_PERMISSION 값과 일치함을 확인합니다.
•
댓글 수정 실패(3) : 데이터베이스 에러
◦
인증된 상태이며, CommentModifyRequest를 정의해줍니다.
◦
postService에 수정 요청을 보내면 DATABASE_ERROR 를 리턴합니다.
◦
/api/v1/posts/1/comments/1 에PUT요청 시, 결과 상태값이 미리 정의한 DATABASE_ERROR 값과 일치함을 확인합니다.
Service
실패하는 경우(3가지)
•
댓글 수정 실패(1) : 포스트 존재하지 않음
◦
정의한 mock 객체의 commentId로 댓글을 조회할 때, 조회되는 댓글이 없습니다.
◦
assertThrows로 에러를 던져줍니다.
◦
exception이 발생한 에러코드는 POST_NOT_FOUND 값과 동일함을 확인합니다.
•
댓글 수정 실패(2) : 작성자!=유저
◦
user 2명의 mock 객체를 만들어줍니다.
◦
댓글을 db에서 조회할 때는 User 1이 작성한 댓글을 리턴해줍니다.
◦
사용자를 db에서 조회할 때는 User2 엔티티를 반환해줍니다.
◦
assertThrows로 에러를 던져줍니다.
◦
exception이 발생한 에러코드는 INVALID_PERMISSION 값과 동일함을 확인합니다.
•
댓글 수정 실패(3) : 유저 존재하지 않음
◦
정의한 mock 객체의 commentId로 댓글을 조회할 때, 조회되는 댓글은 있지만, 해당 댓글을 작성한 userName으로 조회되는 사용자는 없습니다.
◦
assertThrows로 에러를 던져줍니다.
◦
exception이 발생한 에러코드는 USERNAME_NOT_FOUND 값과 동일함을 확인합니다.