diff --git a/loan/src/main/java/com/example/loan/controller/CounselController.java b/loan/src/main/java/com/example/loan/controller/CounselController.java index 3e1bf28c..3911fd65 100644 --- a/loan/src/main/java/com/example/loan/controller/CounselController.java +++ b/loan/src/main/java/com/example/loan/controller/CounselController.java @@ -23,4 +23,9 @@ public class CounselController extends AbstractController { return ok(counselService.get(counselId)); } + @PutMapping("/{counselId}") + public ResponseDto update(@PathVariable Long counselId, @RequestBody CounselDto.Request request) { + return ok(counselService.update(counselId, request)); + } + } diff --git a/loan/src/main/java/com/example/loan/service/CounselService.java b/loan/src/main/java/com/example/loan/service/CounselService.java index 340d732c..4062c7a2 100644 --- a/loan/src/main/java/com/example/loan/service/CounselService.java +++ b/loan/src/main/java/com/example/loan/service/CounselService.java @@ -7,4 +7,6 @@ public interface CounselService { CounselDto.Response create(CounselDto.Request request); CounselDto.Response get(Long counselId); + + CounselDto.Response update(Long counselId, CounselDto.Request request); } diff --git a/loan/src/main/java/com/example/loan/service/CounselServiceImpl.java b/loan/src/main/java/com/example/loan/service/CounselServiceImpl.java index e0516e35..ac44c8cb 100644 --- a/loan/src/main/java/com/example/loan/service/CounselServiceImpl.java +++ b/loan/src/main/java/com/example/loan/service/CounselServiceImpl.java @@ -35,4 +35,21 @@ public class CounselServiceImpl implements CounselService { return modelMapper.map(counsel, CounselDto.Response.class); } + + @Override + public CounselDto.Response update(Long counselId, CounselDto.Request request) { + Counsel counsel = counselRepository.findById(counselId) + .orElseThrow(() -> new BaseException(ResultType.SYSTEM_ERROR)); + + counsel.setName(request.getName()); + counsel.setCellPhone(request.getCellPhone()); + counsel.setEmail(request.getEmail()); + counsel.setMemo(request.getMemo()); + counsel.setAddress(request.getAddress()); + counsel.setAddressDetail(request.getAddressDetail()); + counsel.setZipCode(request.getZipCode()); + + counselRepository.save(counsel); + return modelMapper.map(counsel, CounselDto.Response.class); + } } diff --git a/loan/src/test/java/com/example/loan/service/CounselServiceTest.java b/loan/src/test/java/com/example/loan/service/CounselServiceTest.java index c0a3d1e6..70f37187 100644 --- a/loan/src/test/java/com/example/loan/service/CounselServiceTest.java +++ b/loan/src/test/java/com/example/loan/service/CounselServiceTest.java @@ -86,4 +86,26 @@ class CounselServiceTest { assertThatThrownBy(() -> counselService.get(findId)) .isInstanceOf(BaseException.class); } + + @Test + void Should_ReturnUpdatedResponseOfExistCounselEntity_When_RequestUpdateExistCounselInfo() { + Long findId = 1L; + + Counsel entity = Counsel.builder() + .counselId(1L) + .name("kim") + .build(); + + CounselDto.Request request = CounselDto.Request.builder() + .name("jung") + .build(); + + when(counselRepository.save(ArgumentMatchers.any(Counsel.class))).thenReturn(entity); + when(counselRepository.findById(findId)).thenReturn(Optional.ofNullable(entity)); + + CounselDto.Response actual = counselService.update(findId, request); + + assertThat(actual.getCounselId()).isSameAs(findId); + assertThat(actual.getName()).isSameAs("jung"); + } } \ No newline at end of file