수진개발서
article thumbnail
[SNS Project] 좋아요 기능 - Soft Delete 리펙토링(@Modifying)
프로젝트/SNS만들기 2023. 1. 6. 01:50

✅요구사항 좋아요 기능에 Soft Delete를 적용하여 삭제될 시 deleted_at에 삭제된 시간을 기록한다. ✅코드 🔹좋아요 기능 Like @Entity @Getter @Builder @AllArgsConstructor @NoArgsConstructor @Table(name = "likes") @SQLDelete(sql = "UPDATE likes SET deleted_at = now() WHERE id = ?") public class Like extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @ManyToOne @JoinColumn(name = "post_id") priva..

[SNS Project] Post, User 예외처리 분리하기
프로젝트/SNS만들기 2023. 1. 4. 21:54

목표 SNS만들기 프로젝트를 진행하면서 모든 로직에 공통적으로 들어가는 부분이 있었다. 아래와 같이 token에서 추출한 userName이 존재하는지, 접속한 게시물이 존재하는지 예외처리하는 로직이였다. 해당 로직을 클래스화 해두면 게시물기능 뿐만 아니라 댓글기능, 좋아요기능 등등 sns프로젝트 전반적으로 사용할 수 있을거라고 판단하여서 ValidateService를 만들어서 로직을 분리하였다. //유저 확인 userRepository.findByUserName(userName) .orElseThrow(() -> new AppException(ErrorCode.USERNAME_NOT_FOUND, ErrorCode.USERNAME_NOT_FOUND.getMessage())); //게시물 확인 postRep..

[SNS Project] 좋아요 테스트
프로젝트/SNS만들기 2023. 1. 4. 21:38

좋아요 기능을 테스트하는 테스트코드를 작성하였다. Mock라이브러를 사용하였다. 요구사항 Controller테스트 - 좋아요 누르기 성공 - 좋아요 누르기 실패: 로그인 하지 않은 경우 - 좋아요 누르기 실패: 해당 Post가 없는 경우 코드 LikeControllerTest 좋아요 기능 테스트를 Mock라이브러리를 사용해서 구현하였다. Service쪽의 로직테스트가 아닌 Controller테스트이기 때문에 Service는 Mock을 사용해서 가짜객체를 생성해주었다. 좋아요 기능은 result에 String값만 반환해주기 때문에 그 반환된 문자열 값이 내가 원하는게 맞는지를 비교해주고 싶었다. 그럴 경우 MockMvc에서 json을 검증하기 위해 다양한 방법들이 있었다. .andExpect(jsonPat..

[SNS Project] 좋아요 조회
프로젝트/SNS만들기 2023. 1. 4. 21:26

sns만들기 프로젝트 2일차 좋아요 조회를 구현하였다. 요구사항은 다음과 같다. 요구사항 - 좋아요 조회 좋아요 개수 GET /posts/{postsId}/likes - Json방식으로 리턴 - response 형태: { "resultCode":"SUCCESS", "result": 0 } 코드 LikeController 좋아요 조회를 구현했다. 생각해야할것 중 하나는 좋아요의 개수는 로그인 필요 없이 볼 수 있다는것! 그점을 간과하고 로그인한 유저만 조회를 할 수 있도록 구현했다가 수정했다. 바로 service에서 좋아요 개수를 받아 Response에 감싸서 보내주었다. /** * 좋아요 개수 조회 */ @GetMapping public Response getLike(@PathVariable Long p..