From 354cc7e4978b8f5f76642911573b5c0efb3efd4b Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 10:54:39 +0900 Subject: [PATCH] admin: refactoring --- ...dministratorManagementQueryRepository.java | 2 +- ...AdministratorManagementRestController.java | 48 +++++-- .../AdministratorManagementService.java | 72 ----------- .../reqres/AdministratorUpdate.java | 3 - .../service}/AdministratorCreateCommand.java | 2 +- .../service/AdministratorCreateResult.java | 18 +++ .../AdministratorManagementService.java | 47 +++++++ .../service}/AdministratorUpdateCommand.java | 4 +- .../main/admin/menu/MenuRestController.java | 5 +- .../MenuCreateCommand.java | 2 +- .../MenuGroupCreateCommand.java | 2 +- .../MenuGroupUpdateCommand.java | 2 +- .../admin/menu/{ => service}/MenuService.java | 10 +- .../MenuUpdateCommand.java | 2 +- .../main/admin/role/RoleRestController.java | 30 ++++- .../web/main/admin/role/RoleService.java | 66 ---------- .../role/service}/RoleCreateCommand.java | 2 +- .../admin/role/service/RoleCreateResult.java | 20 +++ .../main/admin/role/service/RoleService.java | 60 +++++++++ .../role/service}/RoleUpdateCommand.java | 9 +- .../AdministratorServiceTest.java | 120 ++++++++++-------- .../web/main/admin/menu/MenuServiceTest.java | 40 +++--- .../web/main/admin/role/RoleServiceTest.java | 95 ++++++++------ 23 files changed, 368 insertions(+), 293 deletions(-) delete mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementService.java rename poc/admin/src/main/java/com/bpgroup/poc/admin/{domain/admin/command => web/main/admin/management/service}/AdministratorCreateCommand.java (93%) create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateResult.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java rename poc/admin/src/main/java/com/bpgroup/poc/admin/{domain/admin/command => web/main/admin/management/service}/AdministratorUpdateCommand.java (90%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/{command => service}/MenuCreateCommand.java (94%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/{command => service}/MenuGroupCreateCommand.java (93%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/{command => service}/MenuGroupUpdateCommand.java (94%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/{ => service}/MenuService.java (89%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/{command => service}/MenuUpdateCommand.java (94%) delete mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleService.java rename poc/admin/src/main/java/com/bpgroup/poc/admin/{domain/admin/command => web/main/admin/role/service}/RoleCreateCommand.java (92%) create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateResult.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleService.java rename poc/admin/src/main/java/com/bpgroup/poc/admin/{domain/admin/command => web/main/admin/role/service}/RoleUpdateCommand.java (72%) diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementQueryRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementQueryRepository.java index 2e223a8..9ef2d17 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementQueryRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementQueryRepository.java @@ -26,7 +26,7 @@ public class AdministratorManagementQueryRepository { .fetch(); } - public AdministratorFind.Response findByLoginId(String loginId) { + public AdministratorFind.Response find(String loginId) { return queryFactory.select(Projections.fields(AdministratorFind.Response.class, administrator.id, administrator.loginId, diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementRestController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementRestController.java index 85c0b29..464746e 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementRestController.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementRestController.java @@ -4,6 +4,10 @@ import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorCreat import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorDelete; import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorFind; import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorUpdate; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateCommand; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateResult; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorManagementService; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorUpdateCommand; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -20,32 +24,37 @@ import java.util.List; public class AdministratorManagementRestController { private final PasswordEncoder passwordEncoder; - private final AdministratorManagementService administratorManagementService; + + private final AdministratorManagementService service; + private final AdministratorManagementQueryRepository queryRepository; /** * 전체 조회 + * * @return 응답 */ @GetMapping("/list") public ResponseEntity getAdministrators() { - List response = administratorManagementService.findAll(); + List response = queryRepository.findAll(); return ResponseEntity.ok(response); } /** * 조회 + * * @param loginId 관리자 ID * @return 응답 */ @GetMapping("/{loginId}") public ResponseEntity getAdministrator(@PathVariable @NotBlank String loginId) { - AdministratorFind.Response response = administratorManagementService.find(loginId); + AdministratorFind.Response response = queryRepository.find(loginId); return ResponseEntity.ok(response); } /** * 관리자 등록 - * @param request 요청 + * + * @param request 요청 * @param bindingResult Validation 결과 * @return 응답 */ @@ -54,9 +63,15 @@ public class AdministratorManagementRestController { @RequestBody @Validated AdministratorCreate.Request request, BindingResult bindingResult ) { - request.setPassword(passwordEncoder.encode(request.getPassword())); - AdministratorCreate.Response response = administratorManagementService.create(request); - return ResponseEntity.ok(response); + AdministratorCreateResult result = service.create( + AdministratorCreateCommand.builder() + .loginId(request.getLoginId()) + .password(passwordEncoder.encode(request.getPassword())) + .email(request.getEmail()) + .name(request.getName()) + .build() + ); + return ResponseEntity.ok(AdministratorCreate.Response.success(result.getId())); } @PostMapping("/update") @@ -64,14 +79,21 @@ public class AdministratorManagementRestController { @RequestBody @Validated AdministratorUpdate.Request request, BindingResult bindingResult ) { - request.setPassword(passwordEncoder.encode(request.getPassword())); - AdministratorUpdate.Response response = administratorManagementService.update(request); - return ResponseEntity.ok(response); + service.update( + AdministratorUpdateCommand.builder() + .password(passwordEncoder.encode(request.getPassword())) + .name(request.getName()) + .email(request.getEmail()) + .build() + ); + + return ResponseEntity.ok(AdministratorUpdate.Response.success()); } /** * 관리자 삭제 - * @param request 요청 + * + * @param request 요청 * @param bindingResult Validation 결과 * @return 응답 */ @@ -80,8 +102,8 @@ public class AdministratorManagementRestController { @RequestBody @Validated AdministratorDelete.Request request, BindingResult bindingResult ) { - AdministratorDelete.Response response = administratorManagementService.delete(request); - return ResponseEntity.ok(response); + service.delete(request.getId()); + return ResponseEntity.ok(AdministratorDelete.Response.success()); } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementService.java deleted file mode 100644 index 4cd2c50..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementService.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.bpgroup.poc.admin.web.main.admin.management; - -import com.bpgroup.poc.admin.domain.admin.command.AdministratorCreateCommand; -import com.bpgroup.poc.admin.domain.admin.command.AdministratorUpdateCommand; -import com.bpgroup.poc.admin.domain.admin.entity.Administrator; -import com.bpgroup.poc.admin.domain.admin.entity.AdministratorRepository; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorCreate; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorDelete; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorFind; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorUpdate; -import jakarta.validation.constraints.NotBlank; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -@Service -@RequiredArgsConstructor -@Transactional -public class AdministratorManagementService { - - private final AdministratorManagementQueryRepository queryRepository; - private final AdministratorRepository repository; - - public List findAll() { - return queryRepository.findAll(); - } - - public AdministratorFind.Response find(@NotBlank String loginId) { - return queryRepository.findByLoginId(loginId); - } - - public AdministratorCreate.Response create(AdministratorCreate.Request request) { - Administrator admin = repository.save( - AdministratorCreateCommand.builder() - .loginId(request.getLoginId()) - .password(request.getPassword()) - .email(request.getEmail()) - .name(request.getName()) - .build() - .toEntity() - ); - - return AdministratorCreate.Response.success(admin.getId()); - } - - public AdministratorUpdate.Response update(AdministratorUpdate.Request request) { - Optional findAdministrator = repository.findById(request.getId()); - if (findAdministrator.isEmpty()) { - return AdministratorUpdate.Response.fail("ADMINISTRATOR_NOT_FOUND"); - } - - Administrator administrator = findAdministrator.get(); - administrator.update( - AdministratorUpdateCommand.of( - request.getId(), - request.getPassword(), - request.getEmail(), - request.getName() - ).toEntity() - ); - - return AdministratorUpdate.Response.success(); - } - - public AdministratorDelete.Response delete(AdministratorDelete.Request request) { - repository.deleteById(request.getId()); - return AdministratorDelete.Response.success(); - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorUpdate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorUpdate.java index 14a88a7..acbb7ec 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorUpdate.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorUpdate.java @@ -15,9 +15,6 @@ public class AdministratorUpdate { @NotNull private Long id; - @NotBlank - private String username; - @NotBlank private String password; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/AdministratorCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java similarity index 93% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/AdministratorCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java index 833eb36..334d411 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/AdministratorCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.command; +package com.bpgroup.poc.admin.web.main.admin.management.service; import com.bpgroup.poc.admin.domain.admin.entity.Administrator; import jakarta.validation.constraints.NotBlank; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateResult.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateResult.java new file mode 100644 index 0000000..defa777 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateResult.java @@ -0,0 +1,18 @@ +package com.bpgroup.poc.admin.web.main.admin.management.service; + +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class AdministratorCreateResult { + private Long id; + + @Builder + public static AdministratorCreateResult of(Long id) { + AdministratorCreateResult result = new AdministratorCreateResult(); + result.id = id; + return result; + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java new file mode 100644 index 0000000..23be259 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java @@ -0,0 +1,47 @@ +package com.bpgroup.poc.admin.web.main.admin.management.service; + +import com.bpgroup.poc.admin.domain.admin.entity.Administrator; +import com.bpgroup.poc.admin.domain.admin.entity.AdministratorRepository; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +@Validated +@Transactional +public class AdministratorManagementService { + + private final AdministratorRepository repository; + + public AdministratorCreateResult create( + @NotNull @Valid AdministratorCreateCommand command + ) { + Administrator admin = repository.save(command.toEntity()); + + return AdministratorCreateResult.builder() + .id(admin.getId()) + .build(); + } + + public void update( + @NotNull @Valid AdministratorUpdateCommand command + ) { + Optional findAdministrator = repository.findById(command.getId()); + if (findAdministrator.isEmpty()) { + throw new IllegalArgumentException("Not found administrator"); + } + + Administrator administrator = findAdministrator.get(); + administrator.update(command.toEntity()); + } + + public void delete(@NotNull Long id) { + repository.deleteById(id); + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/AdministratorUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java similarity index 90% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/AdministratorUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java index 54187c7..2465f1b 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/AdministratorUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java @@ -1,8 +1,9 @@ -package com.bpgroup.poc.admin.domain.admin.command; +package com.bpgroup.poc.admin.web.main.admin.management.service; import com.bpgroup.poc.admin.domain.admin.entity.Administrator; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.Builder; import lombok.Getter; import lombok.ToString; @@ -22,6 +23,7 @@ public class AdministratorUpdateCommand { @NotBlank private String name; + @Builder public static AdministratorUpdateCommand of(Long id, String password, String email, String name) { AdministratorUpdateCommand command = new AdministratorUpdateCommand(); command.id = id; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java index 3f17892..975908f 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java @@ -1,9 +1,6 @@ package com.bpgroup.poc.admin.web.main.admin.menu; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupUpdateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuUpdateCommand; +import com.bpgroup.poc.admin.web.main.admin.menu.service.*; import com.bpgroup.poc.admin.web.main.admin.menu.reqres.*; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java similarity index 94% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java index cdcd5ec..f33077f 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.command; +package com.bpgroup.poc.admin.web.main.admin.menu.service; import com.bpgroup.poc.admin.domain.admin.entity.Menu; import jakarta.validation.constraints.NotBlank; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java similarity index 93% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java index 0fdfc53..0e223f2 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.command; +package com.bpgroup.poc.admin.web.main.admin.menu.service; import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; import jakarta.validation.constraints.NotBlank; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java similarity index 94% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java index dd240f0..0f9f1bb 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.command; +package com.bpgroup.poc.admin.web.main.admin.menu.service; import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; import jakarta.validation.constraints.NotBlank; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java similarity index 89% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuService.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java index 4d776fa..98fdaee 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java @@ -1,13 +1,13 @@ -package com.bpgroup.poc.admin.web.main.admin.menu; +package com.bpgroup.poc.admin.web.main.admin.menu.service; import com.bpgroup.poc.admin.domain.admin.entity.Menu; import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; import com.bpgroup.poc.admin.domain.admin.entity.MenuGroupRepository; import com.bpgroup.poc.admin.domain.admin.entity.MenuRepository; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupUpdateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuUpdateCommand; +import com.bpgroup.poc.admin.web.main.admin.menu.service.MenuCreateCommand; +import com.bpgroup.poc.admin.web.main.admin.menu.service.MenuGroupCreateCommand; +import com.bpgroup.poc.admin.web.main.admin.menu.service.MenuGroupUpdateCommand; +import com.bpgroup.poc.admin.web.main.admin.menu.service.MenuUpdateCommand; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java similarity index 94% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java index cd11853..032c11c 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.command; +package com.bpgroup.poc.admin.web.main.admin.menu.service; import com.bpgroup.poc.admin.domain.admin.entity.Menu; import jakarta.validation.constraints.NotBlank; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java index 3849e68..c58b939 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java @@ -3,6 +3,10 @@ package com.bpgroup.poc.admin.web.main.admin.role; import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleCreate; import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete; import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleUpdate; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateCommand; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateResult; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleService; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleUpdateCommand; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -20,7 +24,6 @@ public class RoleRestController { private final RoleService roleService; - /** * 권한 등록 */ @@ -29,8 +32,14 @@ public class RoleRestController { @RequestBody @Valid RoleCreate.Request request, BindingResult bindingResult ) { - RoleCreate.Response response = roleService.create(request); - return ResponseEntity.ok(response); + RoleCreateResult result = roleService.create( + RoleCreateCommand.builder() + .name(request.getName()) + .description(request.getDescription()) + .build() + ); + + return ResponseEntity.ok(RoleCreate.Response.success(result.getId())); } /** @@ -41,8 +50,15 @@ public class RoleRestController { @RequestBody @Valid RoleUpdate.Request request, BindingResult bindingResult ) { - RoleUpdate.Response response = roleService.update(request); - return ResponseEntity.ok(response); + roleService.update( + RoleUpdateCommand.builder() + .id(request.getId()) + .name(request.getName()) + .description(request.getDescription()) + .build() + ); + + return ResponseEntity.ok(RoleUpdate.Response.success()); } /** @@ -53,8 +69,8 @@ public class RoleRestController { @RequestBody @Valid RoleDelete.Request request, BindingResult bindingResult ) { - RoleDelete.Response response = roleService.delete(request); - return ResponseEntity.ok(response); + roleService.delete(request.getId()); + return ResponseEntity.ok(RoleDelete.Response.success()); } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleService.java deleted file mode 100644 index 9e910bf..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleService.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.bpgroup.poc.admin.web.main.admin.role; - -import com.bpgroup.poc.admin.domain.admin.entity.Role; -import com.bpgroup.poc.admin.domain.admin.entity.RoleRepository; -import com.bpgroup.poc.admin.domain.admin.command.RoleCreateCommand; -import com.bpgroup.poc.admin.domain.admin.command.RoleUpdateCommand; -import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleCreate; -import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete; -import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleUpdate; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -@Service -@RequiredArgsConstructor -public class RoleService { - - private final RoleRepository repository; - private final RoleQueryRepository queryRepository; - - /** - * ROLE 생성 - */ - public RoleCreate.Response create(RoleCreate.Request request) { - Role role = repository.save( - RoleCreateCommand.builder() - .name(request.getName()) - .description(request.getDescription()) - .build() - .toEntity() - ); - - return RoleCreate.Response.success(role.getId()); - } - - /** - * ROLE 수정 - */ - public RoleUpdate.Response update(RoleUpdate.Request request) { - Optional role = repository.findById(request.getId()); - if (role.isEmpty()) { - return RoleUpdate.Response.fail("ROLE_NOT_FOUND"); - } - - Role findRole = role.get(); - Role updateRole = RoleUpdateCommand.builder() - .name(request.getName()) - .description(request.getDescription()) - .build() - .toEntity(); - - findRole.update(updateRole); - - return RoleUpdate.Response.success(); - } - - public RoleDelete.Response delete(RoleDelete.Request request) { - try { - repository.deleteById(request.getId()); - return RoleDelete.Response.success(); - } catch (Exception e) { - return RoleDelete.Response.fail("Role Delete Fail"); - } - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/RoleCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java similarity index 92% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/RoleCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java index 6d8aefa..2eee1d5 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/RoleCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.command; +package com.bpgroup.poc.admin.web.main.admin.role.service; import com.bpgroup.poc.admin.domain.admin.entity.Role; import jakarta.validation.constraints.NotBlank; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateResult.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateResult.java new file mode 100644 index 0000000..2535cd0 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateResult.java @@ -0,0 +1,20 @@ +package com.bpgroup.poc.admin.web.main.admin.role.service; + +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class RoleCreateResult { + + private Long id; + + @Builder + public static RoleCreateResult of(Long id) { + RoleCreateResult result = new RoleCreateResult(); + result.id = id; + return result; + } + +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleService.java new file mode 100644 index 0000000..d15a3cd --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleService.java @@ -0,0 +1,60 @@ +package com.bpgroup.poc.admin.web.main.admin.role.service; + +import com.bpgroup.poc.admin.domain.admin.entity.Role; +import com.bpgroup.poc.admin.domain.admin.entity.RoleRepository; +import com.bpgroup.poc.admin.web.main.admin.role.RoleQueryRepository; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +@Validated +@Transactional +public class RoleService { + + private final RoleRepository repository; + private final RoleQueryRepository queryRepository; + + /** + * ROLE 생성 + */ + public RoleCreateResult create( + @NotNull @Valid RoleCreateCommand command + ) { + Role role = repository.save(command.toEntity()); + + return RoleCreateResult.builder() + .id(role.getId()) + .build(); + } + + /** + * ROLE 수정 + */ + public void update( + @NotNull @Valid RoleUpdateCommand command + ) { + Optional findRole = repository.findById(command.getId()); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Role Not Found"); + } + + Role role = findRole.get(); + role.update(command.toEntity()); + } + + public void delete(@NotNull Long id) { + Optional findRole = repository.findById(id); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Role Not Found"); + } + + repository.deleteById(id); + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/RoleUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java similarity index 72% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/RoleUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java index 692493e..e6362f5 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/command/RoleUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java @@ -1,7 +1,8 @@ -package com.bpgroup.poc.admin.domain.admin.command; +package com.bpgroup.poc.admin.web.main.admin.role.service; import com.bpgroup.poc.admin.domain.admin.entity.Role; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Builder; import lombok.Getter; import lombok.ToString; @@ -10,14 +11,16 @@ import lombok.ToString; @ToString public class RoleUpdateCommand { + @NotNull + private Long id; @NotBlank private String name; - private String description; @Builder - public static RoleUpdateCommand of(String name, String description) { + public static RoleUpdateCommand of(Long id, String name, String description) { RoleUpdateCommand command = new RoleUpdateCommand(); + command.id = id; command.name = name; command.description = description; return command; diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java index 0f43a5e..ab61f76 100644 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java @@ -1,14 +1,13 @@ package com.bpgroup.poc.admin.web.main.admin.administrator; -import com.bpgroup.poc.admin.domain.admin.command.AdministratorCreateCommand; import com.bpgroup.poc.admin.domain.admin.entity.Administrator; import com.bpgroup.poc.admin.domain.admin.entity.AdministratorRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; -import com.bpgroup.poc.admin.web.main.admin.management.AdministratorManagementQueryRepository; -import com.bpgroup.poc.admin.web.main.admin.management.AdministratorManagementService; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorCreate; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorDelete; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorUpdate; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateCommand; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateResult; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorManagementService; +import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorUpdateCommand; +import jakarta.validation.ConstraintViolationException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -16,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; @Transactional @DisplayName("AdministratorService 테스트") @@ -27,9 +27,6 @@ public class AdministratorServiceTest extends MariaDBTestEnv { @Autowired private AdministratorRepository repository; - @Autowired - private AdministratorManagementQueryRepository queryRepository; - @BeforeEach void setUp() { @@ -40,46 +37,48 @@ public class AdministratorServiceTest extends MariaDBTestEnv { @Test public void createAdministratorTest() { // given - AdministratorCreate.Request request = new AdministratorCreate.Request(); - request.setLoginId("test"); - request.setPassword("test"); - request.setEmail("test"); - request.setName("test"); + AdministratorCreateCommand command = AdministratorCreateCommand.builder() + .loginId("test") + .password("test") + .email("test") + .name("test") + .build(); // when - AdministratorCreate.Response response = service.create(request); + AdministratorCreateResult createResult = service.create(command); // then - assertThat(response.getResultCode()).isEqualTo("0000"); + assertThat(createResult.getId()).isNotNull(); } @DisplayName("Administrator 수정 테스트") @Test public void updateAdministratorTest() { // given - Administrator administrator = repository.save( - AdministratorCreateCommand.builder() - .loginId("test") - .password("test") - .email("test") - .name("test") - .build() - .toEntity() - ); - AdministratorUpdate.Request updateRequest = new AdministratorUpdate.Request(); - updateRequest.setId(administrator.getId()); - updateRequest.setPassword("test2"); - updateRequest.setEmail("test2"); - updateRequest.setName("test2"); + AdministratorCreateCommand command = AdministratorCreateCommand.builder() + .loginId("test") + .password("test") + .email("test") + .name("test") + .build(); // when - AdministratorUpdate.Response updateResponse = service.update(updateRequest); + AdministratorCreateResult createResult = service.create(command); + flushAndClear(); + + AdministratorUpdateCommand updateCommand = AdministratorUpdateCommand.builder() + .id(createResult.getId()) + .password("test2") + .email("test2") + .name("test2") + .build(); + + // when + service.update(updateCommand); + flushAndClear(); // then - assertThat(updateResponse.getResultCode()).isEqualTo("0000"); - - flushAndClear(); - Administrator findAdministrator = repository.findById(administrator.getId()).orElseThrow(); + Administrator findAdministrator = repository.findById(createResult.getId()).orElseThrow(); assertThat(findAdministrator.getPassword()).isEqualTo("test2"); assertThat(findAdministrator.getEmail()).isEqualTo("test2"); assertThat(findAdministrator.getName()).isEqualTo("test2"); @@ -89,27 +88,48 @@ public class AdministratorServiceTest extends MariaDBTestEnv { @Test public void deleteAdministratorTest() { // given - Administrator administrator = repository.save( - AdministratorCreateCommand.builder() - .loginId("test") - .password("test") - .email("test") - .name("test") - .build() - .toEntity() - ); + AdministratorCreateCommand command = AdministratorCreateCommand.builder() + .loginId("test") + .password("test") + .email("test") + .name("test") + .build(); - AdministratorDelete.Request request = new AdministratorDelete.Request(); - request.setId(administrator.getId()); + AdministratorCreateResult createResult = service.create(command); + flushAndClear(); // when - AdministratorDelete.Response deleteResponse = service.delete(request); + service.delete(createResult.getId()); + flushAndClear(); // then - assertThat(deleteResponse.getResultCode()).isEqualTo("0000"); + assertThat(repository.findById(createResult.getId())).isEmpty(); + } - flushAndClear(); - assertThat(repository.findById(administrator.getId())).isEmpty(); + @Test + @DisplayName("AdministratorService method 호출 유효성 검사 테스트") + void validationTest() { + // create + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId(null).password("password").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("").password("password").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password(null).email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email(null).name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name(null).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("").build())).isInstanceOf(ConstraintViolationException.class); + + // uodate + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(null).password("password").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password(null).email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email(null).name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("").name("name").build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name(null).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("").build())).isInstanceOf(ConstraintViolationException.class); + + // delete + assertThatThrownBy(() -> service.delete(null)).isInstanceOf(ConstraintViolationException.class); } } diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java index 486ee01..a0ea6bd 100644 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java @@ -5,10 +5,7 @@ import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; import com.bpgroup.poc.admin.domain.admin.entity.MenuGroupRepository; import com.bpgroup.poc.admin.domain.admin.entity.MenuRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupUpdateCommand; -import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuUpdateCommand; +import com.bpgroup.poc.admin.web.main.admin.menu.service.*; import jakarta.validation.ConstraintViolationException; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -20,7 +17,8 @@ import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.assertThatThrownBy; @Transactional -public class MenuServiceTest extends MariaDBTestEnv { +@DisplayName("MenuService 테스트") +class MenuServiceTest extends MariaDBTestEnv { @Autowired private MenuService menuService; @@ -32,14 +30,14 @@ public class MenuServiceTest extends MariaDBTestEnv { private MenuRepository menuRepository; @BeforeEach - public void setUp() { + void setUp() { menuGroupRepository.deleteAll(); menuRepository.deleteAll(); } @Test @DisplayName("MenuGroup 생성 테스트") - public void createMenuGroupTest() { + void createMenuGroupTest() { // given MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); @@ -53,7 +51,7 @@ public class MenuServiceTest extends MariaDBTestEnv { @Test @DisplayName("MenuGroup 수정 테스트") - public void updateMenuGroupTest() { + void updateMenuGroupTest() { // given MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); menuService.createMenuGroup(groupCreateCommand); @@ -78,7 +76,7 @@ public class MenuServiceTest extends MariaDBTestEnv { @Test @DisplayName("MenuGroup 삭제 테스트") - public void deleteMenuGroupTest() { + void deleteMenuGroupTest() { // given MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); menuService.createMenuGroup(groupCreateCommand); @@ -94,7 +92,7 @@ public class MenuServiceTest extends MariaDBTestEnv { @Test @DisplayName("MenuGroup 삭제 시 Menu 동시 삭제 테스트") - public void deleteMenuGroupWithMenuTest() { + void deleteMenuGroupWithMenuTest() { // given MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); menuService.createMenuGroup(groupCreateCommand); @@ -121,7 +119,7 @@ public class MenuServiceTest extends MariaDBTestEnv { @Test @DisplayName("Menu 생성 테스트") - public void createGroupTest() { + void createGroupTest() { // given MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); menuService.createMenuGroup(groupCreateCommand); @@ -144,7 +142,7 @@ public class MenuServiceTest extends MariaDBTestEnv { @Test @DisplayName("Menu 수정 테스트") - public void updateMenuTest() { + void updateMenuTest() { // given MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); menuService.createMenuGroup(groupCreateCommand); @@ -179,7 +177,7 @@ public class MenuServiceTest extends MariaDBTestEnv { @Test @DisplayName("Menu 삭제 테스트") - public void deleteMenuTest() { + void deleteMenuTest() { // given MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); menuService.createMenuGroup(groupCreateCommand); @@ -205,19 +203,19 @@ public class MenuServiceTest extends MariaDBTestEnv { @Test @DisplayName("MenuService method 호출 유효성 검사 테스트") - public void validationTest() { + void validationTest() { // menuGroup create assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("uri").name("").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri(null).name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("uri").name("").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("uri").name(null).sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("uri").name("name").sortOrder(null).build())).isInstanceOf(ConstraintViolationException.class); // menuGroup update - assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri("").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri("uri").name("").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(null).uri("uri").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri("").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri(null).name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri("uri").name("").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri("uri").name(null).sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri("uri").name("name").sortOrder(null).build())).isInstanceOf(ConstraintViolationException.class); @@ -225,18 +223,18 @@ public class MenuServiceTest extends MariaDBTestEnv { assertThatThrownBy(() -> menuService.deleteMenu(null)).isInstanceOf(ConstraintViolationException.class); // menu create - assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "", "name", 1))).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "uri", "", 1))).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(null, "uri", "name", 1))).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "", "name", 1))).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, null, "name", 1))).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "uri", "", 1))).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "uri", null, 1))).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "uri", "name", null))).isInstanceOf(ConstraintViolationException.class); // menu update - assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("uri").name("").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(null).uri("uri").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri(null).name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("uri").name("").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("uri").name(null).sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("uri").name("name").sortOrder(null).build())).isInstanceOf(ConstraintViolationException.class); diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java index 4c731f6..2d676ed 100644 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java @@ -2,12 +2,12 @@ package com.bpgroup.poc.admin.web.main.admin.role; import com.bpgroup.poc.admin.domain.admin.entity.Role; import com.bpgroup.poc.admin.domain.admin.entity.RoleRepository; -import com.bpgroup.poc.admin.domain.admin.command.RoleCreateCommand; import com.bpgroup.poc.admin.env.MariaDBTestEnv; -import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleCreate; -import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete; -import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleUpdate; -import jakarta.persistence.EntityManager; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateCommand; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateResult; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleService; +import com.bpgroup.poc.admin.web.main.admin.role.service.RoleUpdateCommand; +import jakarta.validation.ConstraintViolationException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -15,14 +15,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; @Transactional @DisplayName("Role Service 테스트") class RoleServiceTest extends MariaDBTestEnv { - @Autowired - private EntityManager entityManager; - @Autowired private RoleService roleService; @@ -38,66 +36,81 @@ class RoleServiceTest extends MariaDBTestEnv { @DisplayName("Role 생성 테스트") void createRoleTest() { // given - RoleCreate.Request request = new RoleCreate.Request(); - request.setName("TEST"); - request.setDescription("TEST"); + RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder() + .name("TEST") + .description("TEST") + .build(); // when - RoleCreate.Response response = roleService.create(request); + RoleCreateResult createResult = roleService.create(roleCreateCommand); // then - assertThat(response.getId()).isNotNull(); - assertThat(response.getResultCode()).isEqualTo("0000"); + assertThat(createResult.getId()).isNotNull(); } @Test @DisplayName("Role 수정 테스트") void updateRoleTest() { // given - Role createRole = roleRepository.save(RoleCreateCommand.builder() + RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder() .name("TEST") .description("TEST") - .build() - .toEntity()); - - RoleUpdate.Request request = new RoleUpdate.Request(); - request.setId(createRole.getId()); - request.setName("TEST2"); - request.setDescription("TEST2"); - - // when - RoleUpdate.Response response = roleService.update(request); - - // then - assertThat(response.getResultCode()).isEqualTo("0000"); + .build(); + RoleCreateResult createResult = roleService.create(roleCreateCommand); flushAndClear(); - Role findRole = roleRepository.findById(createRole.getId()).orElseThrow(); - assertThat(findRole.getName()).isEqualTo("TEST2"); - assertThat(findRole.getDescription()).isEqualTo("TEST2"); + RoleUpdateCommand roleUpdateCommand = RoleUpdateCommand.builder() + .id(createResult.getId()) + .name("TEST2") + .description("TEST2") + .build(); + + // when + roleService.update(roleUpdateCommand); + flushAndClear(); + + // then + Role role = roleRepository.findById(createResult.getId()).orElseThrow(); + assertThat(role.getName()).isEqualTo("TEST2"); + assertThat(role.getDescription()).isEqualTo("TEST2"); } @Test @DisplayName("Role 삭제 테스트") void deleteRoleTest() { // given - Role createRole = roleRepository.save(RoleCreateCommand.builder() + RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder() .name("TEST") .description("TEST") - .build() - .toEntity()); + .build(); - RoleDelete.Request request = new RoleDelete.Request(); - request.setId(createRole.getId()); + RoleCreateResult createResult = roleService.create(roleCreateCommand); + flushAndClear(); // when - RoleDelete.Response response = roleService.delete(request); + roleService.delete(createResult.getId()); + flushAndClear(); // then - assertThat(response.getResultCode()).isEqualTo("0000"); - - flushAndClear(); - assertThat(roleRepository.findById(createRole.getId())).isEmpty(); + assertThat(roleRepository.findById(createResult.getId())).isEmpty(); } + + @Test + @DisplayName("RoleService method 호출 유효성 검사 테스트") + void validationTest() { + // create + assertThatThrownBy(() -> roleService.create(RoleCreateCommand.builder().name(null).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> roleService.create(RoleCreateCommand.builder().name("").build())).isInstanceOf(ConstraintViolationException.class); + + // update + assertThatThrownBy(() -> roleService.update(RoleUpdateCommand.builder().id(null).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> roleService.update(RoleUpdateCommand.builder().id(1L).name(null).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> roleService.update(RoleUpdateCommand.builder().id(1L).name("").build())).isInstanceOf(ConstraintViolationException.class); + + // delete + assertThatThrownBy(() -> roleService.delete(null)).isInstanceOf(ConstraintViolationException.class); + } + + }