From acb28890caed0ca3439658037411fbcee2c31ded Mon Sep 17 00:00:00 2001 From: haerong22 Date: Tue, 17 Jan 2023 02:59:52 +0900 Subject: [PATCH] #31 loan: update application --- .../controller/ApplicationController.java | 8 +++++++ .../loan/service/ApplicationService.java | 2 ++ .../loan/service/ApplicationServiceImpl.java | 15 +++++++++++++ .../loan/service/ApplicationServiceTest.java | 22 +++++++++++++++++++ 4 files changed, 47 insertions(+) diff --git a/loan/src/main/java/com/example/loan/controller/ApplicationController.java b/loan/src/main/java/com/example/loan/controller/ApplicationController.java index bbe27fe5..81e1eceb 100644 --- a/loan/src/main/java/com/example/loan/controller/ApplicationController.java +++ b/loan/src/main/java/com/example/loan/controller/ApplicationController.java @@ -26,4 +26,12 @@ public class ApplicationController extends AbstractController { ) { return ok(applicationService.get(applicationId)); } + + @PutMapping("/{applicationId}") + public ResponseDto update( + @PathVariable Long applicationId, + @RequestBody ApplicationDto.Request request + ) { + return ok(applicationService.update(applicationId, request)); + } } diff --git a/loan/src/main/java/com/example/loan/service/ApplicationService.java b/loan/src/main/java/com/example/loan/service/ApplicationService.java index 93b9f9ae..740be327 100644 --- a/loan/src/main/java/com/example/loan/service/ApplicationService.java +++ b/loan/src/main/java/com/example/loan/service/ApplicationService.java @@ -7,4 +7,6 @@ public interface ApplicationService { ApplicationDto.Response create(ApplicationDto.Request request); ApplicationDto.Response get(Long applicationId); + + ApplicationDto.Response update(Long applicationId, ApplicationDto.Request request); } diff --git a/loan/src/main/java/com/example/loan/service/ApplicationServiceImpl.java b/loan/src/main/java/com/example/loan/service/ApplicationServiceImpl.java index ed4642d9..9ba8bcdb 100644 --- a/loan/src/main/java/com/example/loan/service/ApplicationServiceImpl.java +++ b/loan/src/main/java/com/example/loan/service/ApplicationServiceImpl.java @@ -35,4 +35,19 @@ public class ApplicationServiceImpl implements ApplicationService { return modelMapper.map(application, ApplicationDto.Response.class); } + + @Override + public ApplicationDto.Response update(Long applicationId, ApplicationDto.Request request) { + Application application = applicationRepository.findById(applicationId) + .orElseThrow(() -> new BaseException(ResultType.SYSTEM_ERROR)); + + application.setName(request.getName()); + application.setCellPhone(request.getCellPhone()); + application.setEmail(request.getEmail()); + application.setHopeAmount(request.getHopeAmount()); + + applicationRepository.save(application); + + return modelMapper.map(application, ApplicationDto.Response.class); + } } diff --git a/loan/src/test/java/com/example/loan/service/ApplicationServiceTest.java b/loan/src/test/java/com/example/loan/service/ApplicationServiceTest.java index 6a93197d..8cc2af11 100644 --- a/loan/src/test/java/com/example/loan/service/ApplicationServiceTest.java +++ b/loan/src/test/java/com/example/loan/service/ApplicationServiceTest.java @@ -71,4 +71,26 @@ class ApplicationServiceTest { assertThat(actual.getApplicationId()).isSameAs(findId); } + + @Test + void Should_ReturnUpdatedResponseOfExistApplicationEntity_When_RequestUpdateExistApplicationInfo() { + Long findId = 1L; + + Application entity = Application.builder() + .applicationId(1L) + .hopeAmount(BigDecimal.valueOf(50000000)) + .build(); + + ApplicationDto.Request request = ApplicationDto.Request.builder() + .hopeAmount(BigDecimal.valueOf(40000000)) + .build(); + + when(applicationRepository.save(ArgumentMatchers.any(Application.class))).thenReturn(entity); + when(applicationRepository.findById(findId)).thenReturn(Optional.ofNullable(entity)); + + ApplicationDto.Response actual = applicationService.update(findId, request); + + assertThat(actual.getApplicationId()).isSameAs(findId); + assertThat(actual.getHopeAmount()).isSameAs(request.getHopeAmount()); + } } \ No newline at end of file