팀원들과 중간점검을 실시했고, 백엔드 팀원과의 피드백을 통해 다음의 사항들을 수정하기로 하였다.
팀원이 맡은 로그인 및 인증 부분이 완료되어 userId를 받는 형식에서 토큰을 사용해 유저를 파악하는 것으로 변경하였다.
다음은 수정 사항들이다.
위의 사항을 하나씩 처리한다.
컨트롤러에서 Request Response를 DTO로 분리
다음과 같이 dto package에 request, response를 만들어주었고 분리해주었다.
그에 따라 controller에서는 해당 부분을 삭제하였다.
컨트롤러에 있는 findby부분 다 service로 빼기
어노테이션 사용해서 토큰으로부터 값 받아 유저 id 넣기
다음과 같이 findby부분을 Service로 빼서 Repository에 의한 의존을 없앴으며
@AuthenticationPrincipal을 이용해 토큰으로부터 이메일을 받아오고, 해당 Service에서 email을 통해 userId를 받아오도록 하였다.
Repository에서 바로 반환하던 부분 역시 Service로 빼서 Repository 의존을 없앴다.
이로써 Controller는 Service만 의존하도록 설계되었다.
모든 테스트도 잘 통과하는 걸 볼 수 있었다.
다음과 같이 Exception들을 분리하였다.
테스트 시에 문제가 발생했다. assertj의 assertThatIllegalArgumentException()을 사용하고 있었는데 더이상 IllegalArgumentException이 아닌 Custom Exception이기 때문에 테스트를 통과하지 못하고 있었다.
그래서 다음과 같이 assertThatThrownBy와 hasMessage로 바꾸어 주었다.
그러자 테스트를 통과하는 걸 볼 수 있었다.
이로인해 중간 점검의 수정 사항들을 해결할 수 있었다.
확실히 코드가 깔끔해진 느낌을 받았고 Exception Handling 부분은 공부가 되었다.