REST API (12) Event 수정 API
오늘의 목표 : Event 수정 API 구현
오늘의 목차 :
1. Event 수정 API 구현
1. Event 수정 API 구현
수정 API 를 구현하며 테스트 해야할 4가지가 있다.
1. Event를 정상적으로 수정한 경우 (200)
2.값 자체가 없어서 Event 수정에 실패하는 경우 (400)
3. 로직상 잘못된 값이라 Event 수정에 실패하는 경우 (400)
4. 존재하지 않는 Event이기 때문에 수정에 실패 경우 (404)
4가지 테스트 코드를 먼저 작성하고, EventController 에 PutMapping 으로 수정 핸들러를 추가해보자.
(1) Event를 정상적으로 수정한 경우

db 상에 생성 된 Event 가 없기 때문에 테스트를 진행하기 전 정상적인 Event 를 생성한다.
생성한 Event를 EventDto 에 modelMapper를 사용하여 옮겨담고 이름을 수정한다.
Put 요청으로 수정하려고 하는 Dto 를 전달하고, 응답코드가 200인지, Event의 name 값이 수정하고자 했던 name 값과 동일한지 확인한다.
(2) 값 자체가 없어서 Event 수정에 실패하는 경우

수정요청을 보낼 때 비어있는 EventDto 를 전달할 때 응답 값이 BadRequest로 전달되는지 확인한다.
해당 내용은 우리가 EventDto 를 만들 때 추가한 검증 어노테이션으로 작동한다.
(3) 로직상 잘못된 값이라 Event 수정에 실패하는 경우

입력값의 문제가 아닌 로직상 EventValidator에 추가한 내용으로 Event 수정시에도 해당 로직을 체크하도록 테스트코드를 작성하였다.
(4) 존재하지 않는 Event이기 때문에 수정에 실패 경우

수정로직에서 가장먼저 확인해야하는 부분이 해당 Event 가 있는지 없는지 확인하는 부분이다.
만약 수정해야하는 Event 가 없다면 응답코드로 NotFound를 전달하도록 테스트코드를 작성하였다.
작성한 4가지 테스트를 통화할 수 있도록 수정 핸들러를 작성해보자.

1. 가장먼저 전달받은 Event가 존재하는지 확인한다.
만약 해당 Event 가 없다면 응답코드로 notFound를 전달한다.
2. 수정하고자 하는 값을 EventDto를 통해 전달받는다 그 때 EventDto에 추가한 검증 어노테이션을 통과하지 못한다면 Errors 에 해당 에러정보가 생성될 것이고 응답코드로 badRequest와 함께 에러정보를 전달한다.
3. 로직상 추가한 validator 를 실행하여 로직상의 문제가 있는지 확인하고 만약 문제가 있다면 2번과 동일하게 응답코드로 badRequest와 함께 에러정보를 전달한다.
4. 비어 있지 않고, 값이 이상하지 않으면 업데이트 수행한다.
5. EventResource에 수정된 Event와 profile 정보를 추가하여 반환한다.
전체 테스트 실행 결과

다음과 같이 전체 테스트가 성공한 것을 볼 수 있다.