공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.
이번 장에서는 대출 심사 정보를 수정하는 기능을 구현한다. 대출 심사 등록 이후 심사자의 이름이나 승인 금액과 같은 정보가 변경될 수 있으며, 이를 처리하기 위한 API와 비즈니스 로직을 다룬다.
대출 심사 수정 API
JudgmentController에 다음과 같은 메서드를 추가하여, 특정 심사 정보를 수정할 수 있도록 한다.
@PutMapping("/{judgmentId}")
public ResponseDTO<Response> update(@PathVariable Long judgmentId, @RequestBody Request request) {
return ok(judgmentService.update(judgmentId, request));
}
- PUT 요청: @PutMapping("/{judgmentId}")를 통해 클라이언트로부터 수정할 judgmentId와 수정할 정보를 받아 처리한다. 이 요청은 judgmentService.update(judgmentId, request)를 호출하여 서비스 계층으로 수정 요청을 전달한다.
서비스 계층
서비스 인터페이스
JudgmentService 인터페이스에 심사 수정 메서드가 추가된다.
Response update(Long judgmentId, Request request);
- update 메서드: 특정 judgmentId에 해당하는 심사 정보를 수정할 수 있도록 정의된다.
서비스 구현체
JudgmentServiceImpl에서는 위 update 메서드가 다음과 같이 구현된다.
@Override
public Response update(Long judgmentId, Request request) {
Judgment judgment = judgmentRepository.findById(judgmentId).orElseThrow(() -> {
throw new BaseException(ResultType.SYSTEM_ERROR);
});
judgment.setName(request.getName());
judgment.setApprovalAmount(request.getApprovalAmount());
judgmentRepository.save(judgment);
return modelMapper.map(judgment, Response.class);
}
- 심사 정보 조회: 먼저 데이터베이스에서 수정하려는 judgmentId에 해당하는 심사 정보를 조회한다. 존재하지 않으면 예외를 발생시킨다.
- 수정 사항 반영: 요청받은 데이터를 기반으로 심사자의 이름과 승인 금액을 수정한다.
- 데이터 저장: 수정된 심사 데이터를 다시 데이터베이스에 저장하고, 저장된 데이터를 DTO로 변환해 클라이언트에 반환한다.
테스트 코드
대출 심사 수정 기능을 검증하기 위해 테스트 코드를 작성한다.
@Test
void Should_ReturnUpdatedResponseOfExistJudgmentEntity_When_RequestUpdateExistJudgmentInfo() {
Judgment entity = Judgment.builder()
.judgmentId(1L)
.name("Member Kim")
.approvalAmount(BigDecimal.valueOf(5000000))
.build();
Request request = Request.builder()
.name("Member Lee")
.approvalAmount(BigDecimal.valueOf(10000000))
.build();
when(judgmentRepository.findById(1L)).thenReturn(Optional.ofNullable(entity));
when(judgmentRepository.save(ArgumentMatchers.any(Judgment.class))).thenReturn(entity);
Response actual = judgmentService.update(1L, request);
assertThat(actual.getJudgmentId()).isSameAs(1L);
assertThat(actual.getName()).isSameAs(request.getName());
assertThat(actual.getApprovalAmount()).isSameAs(request.getApprovalAmount());
}
- 심사 정보 수정 테스트
- 기존의 심사 데이터를 준비하고, 새로운 이름과 승인 금액으로 수정 요청을 보낸다.
- 수정된 심사 데이터가 데이터베이스에 저장되고, 수정된 정보가 클라이언트에 올바르게 반환되는지를 검증한다.
실행 테스트
대출 심사 수정 기능을 테스트한 결과, 정상적으로 수정이 이루어짐을 확인할 수 있었다.
1. 심사 수정
PUT /judgments/1 요청을 통해 심사 ID 1에 대한 심사자 이름과 승인 금액을 수정하였다. 요청 본문에 전달된 내용은 심사자 이름을 "이아무개", 승인 금액을 10,000,000으로 설정하였다. 요청이 성공적으로 처리되었고, 응답에서 수정된 내용이 반영된 것을 확인할 수 있다.
2. 수정 후 심사 조회
GET /judgments/1 요청을 통해 수정된 심사 정보를 조회한 결과, 수정된 이름과 승인 금액이 올바르게 반영되어 조회되는 것을 확인하였다. 이는 대출 심사 수정 기능이 정상적으로 동작함을 의미한다.
심사자 이름과 승인 금액이 수정되었고, 수정된 데이터는 정상적으로 조회되었다. 이로써 대출 심사 과정에서의 유연한 정보 관리가 가능해졌다.
'BackEnd > Project' 카테고리의 다른 글
[Loan] Ch04. 대출 심사 금액 부여 기능 구현 (0) | 2024.09.13 |
---|---|
[Loan] Ch04. 대출 심사 삭제 기능 구현 (0) | 2024.09.13 |
[Loan] Ch04. 대출 심사 조회 기능 구현 (0) | 2024.09.13 |
[Loan] Ch04. 대출 심사 등록 기능 구현 (0) | 2024.09.13 |
[Loan] Ch04. 대출 심사 도메인 테이블 정의 (0) | 2024.09.13 |