[일정 관리 앱] API 테스트 - 일정 수정 및 삭제

2024. 9. 30. 17:55내일배움캠프/Schedule Management

 Lv.3 요구사항을 반영해 프로젝트에 '일정 수정', '일정 삭제' 기능을 추가하였다. 추가한 기능이 제대로 동작하는지 확인하기 위해 진행한 API 테스트 결과들을 남겨본다. 이번에 기능을 추가하며 작성한 코드는 여기에서 확인할 수 있다.

 

1. 일정 수정

 요구사항에서의 포인트는 사용자가 입력한 '비밀번호' 와 DB 에 저장된 일정의 '비밀번호' 가 같을 때만 수정이 되어야 하는 것이다. 물론 사용자가 지정한 'id' 에 해당하는 일정이 DB 에도 존재해야 한다.

일정 수정전 schedule 테이블

 

일정 수정전의 schedule 테이블의 상태이다. '일정 수정' 후의 변화를 확인하고자 남겨두었다.

 

먼저 사용자가 정확한 '비밀번호' 를 입력했을 때이다.

비밀번호가 같아 수정이 이루어진 경우

 

수정할 내용이 잘 반영되었으며, 추가적으로 '수정' 작업을 진행했기에 'updateAt' 이 수정된 시간으로 변경되었다(일정은 생성시에 작성일과 수정일이 같다).

 

다음은 사용자가 다른(틀린) '비밀번호' 를 입력했을 때이다.

비밀번호가 달라 수정이 이루어지지 않은 경우

 

비밀번호가 달라 수정내용이 전혀 반영되지 않았으며, 수정 내용이 반영되지 않았기 때문에 'updateAt' 또한 이전과 같이 'createAt' 과 같은 값을 가지고 있는 것을 확인할 수 있다.

 

물론 API 테스트 결과에 노출되는 것 만으로는 수정이 DB 에 제대로 반영됬는지 확신하긴 어려움으로 현재(일정 수정 후) 'schedule' 테이블의 상태도 확인해 보자. 위의 결과라면 'id = 1' 인 레코드는 수정이 되었을 것이고, 'id=2' 인 레코드는 수정이 되지 않았을 것이다.

일정 수정후 schedule 테이블

 

위에서 말한대로 'id=1' 인 레코드의 경우 일정 정보가 수정되었고, 'id=2' 인 레코드의 경우에는 일정 정보가 수정되지 않은 것을 확인할 수 있다.

 

 

2. 일정 삭제

 '일정 수정' 과 마찬가지로 Lv.3 요구사항에서의 포인트는 사용자가 입력한 '비밀번호' 와 DB 에 저장된 일정의 '비밀번호' 의 '일치 여부' 이다. 일치 되었을 때만 일정이 삭제가 되어야 한다. 일정 삭제전 'schedule' 테이블의 상태는 바로 위에 있는 '일정 수정후 schedule 테이블' 이미지를 참고하면 된다.

비밀번호가 같아 삭제가 이루어진 경우

 

사용자가 비밀번호를 올바르게 입력해 기존에 존재했던 '일정' 이 삭제되어 기본 값으로 초기화 된 값들이 반환된 것을 확인할 수 있다. 현재 테이블에 존재하지 않는 레코드를 조회시 기본 생성자로 생성된 DTO 객체를 반환하도록 작성했기 때문이다.

 

다음은 사용자가 다른(틀린) 비밀번호를 입력할 경우이다.

비밀번호가 달라 삭제가 이루어지지 않은 경우

 

사용자가 올바르지 않은 비밀번호를 입력했기에 '일정 삭제' 가 수행되지 않아 삭제 대상이었던 일정의 정보가 반환된 것을 확인할 수 있다.

 

이번에도 현재(일정 삭제 테스트 후) 'schedule' 테이블의 상태를 확인해 보자.

일정 삭제후 schedule 테이블

 

API 테스트 결과처럼 'id=5' 인 레코드는 테이블에서 삭제가 되었고, 'id=6' 인 레코드는 삭제되지 않은 것을 확인할 수 있다.