From ff4bb3e41f8d6a4b3e3e7ee8f50503ede04d6707 Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 10:12:25 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=EB=A9=94=EB=89=B4/=EB=A9=94=EB=89=B4=20?= =?UTF-8?q?=EA=B7=B8=EB=A3=B9=20=EC=83=9D=EC=84=B1,=20=EC=88=98=EC=A0=95,?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EB=B0=8F=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poc/admin/domain/admin/entity/Menu.java | 21 +- .../admin/domain/admin/entity/MenuGroup.java | 26 ++ .../admin/entity/MenuGroupRepository.java | 6 + .../main/admin/menu/MenuRestController.java | 110 ++++++++ .../web/main/admin/menu/MenuService.java | 89 +++++++ .../admin/menu/command/MenuCreateCommand.java | 42 +++ .../menu/command/MenuGroupCreateCommand.java | 36 +++ .../menu/command/MenuGroupUpdateCommand.java | 39 +++ .../admin/menu/command/MenuUpdateCommand.java | 41 +++ .../main/admin/menu/reqres/MenuCreate.java | 45 ++++ .../main/admin/menu/reqres/MenuDelete.java | 36 +++ .../admin/menu/reqres/MenuGroupCreate.java | 46 ++++ .../admin/menu/reqres/MenuGroupDelete.java | 36 +++ .../admin/menu/reqres/MenuGroupUpdate.java | 44 ++++ .../main/admin/menu/reqres/MenuUpdate.java | 44 ++++ .../web/main/admin/menu/MenuServiceTest.java | 248 ++++++++++++++++++ 16 files changed, 908 insertions(+), 1 deletion(-) create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroupRepository.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuService.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuCreateCommand.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupCreateCommand.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupUpdateCommand.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuUpdateCommand.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuCreate.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuDelete.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupCreate.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupDelete.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupUpdate.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuUpdate.java create mode 100644 poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Menu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Menu.java index 9ccb75c..81afce1 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Menu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Menu.java @@ -2,6 +2,7 @@ package com.bpgroup.poc.admin.domain.admin.entity; import com.bpgroup.poc.admin.domain.BaseEntity; import jakarta.persistence.*; +import lombok.Builder; import lombok.Getter; @Getter @@ -22,8 +23,26 @@ public class Menu extends BaseEntity { @Column(name = "sort_order", nullable = false) private Integer sortOrder; - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "menu_group_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private MenuGroup menuGroup; + public void setMenuGroup(MenuGroup menuGroup) { + this.menuGroup = menuGroup; + } + + @Builder + public static Menu of(String uri, String name, Integer sortOrder) { + Menu menu = new Menu(); + menu.uri = uri; + menu.name = name; + menu.sortOrder = sortOrder; + return menu; + } + + public void update(Menu entity) { + this.uri = entity.uri; + this.name = entity.name; + this.sortOrder = entity.sortOrder; + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroup.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroup.java index 7241ae2..b6029d7 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroup.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroup.java @@ -2,8 +2,12 @@ package com.bpgroup.poc.admin.domain.admin.entity; import com.bpgroup.poc.admin.domain.BaseEntity; import jakarta.persistence.*; +import lombok.Builder; import lombok.Getter; +import java.util.ArrayList; +import java.util.List; + @Getter @Entity @Table(name = "menu_group") @@ -22,4 +26,26 @@ public class MenuGroup extends BaseEntity { @Column(name = "sort_order", nullable = false) private Integer sortOrder; + @OneToMany(mappedBy = "menuGroup", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) + private List menus = new ArrayList<>(); + + @Builder + public static MenuGroup of(String uri, String name, Integer sortOrder) { + MenuGroup menuGroup = new MenuGroup(); + menuGroup.uri = uri; + menuGroup.name = name; + menuGroup.sortOrder = sortOrder; + return menuGroup; + } + + public void addMenu(Menu entity) { + this.menus.add(entity); + entity.setMenuGroup(this); + } + + public void update(MenuGroup entity) { + this.uri = entity.uri; + this.name = entity.name; + this.sortOrder = entity.sortOrder; + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroupRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroupRepository.java new file mode 100644 index 0000000..cdc5f47 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroupRepository.java @@ -0,0 +1,6 @@ +package com.bpgroup.poc.admin.domain.admin.entity; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface MenuGroupRepository extends JpaRepository { +} 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 new file mode 100644 index 0000000..3f17892 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java @@ -0,0 +1,110 @@ +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.reqres.*; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/admin/menu") +public class MenuRestController { + + private final MenuService service; + + @PostMapping("/create/menu-group") + public ResponseEntity createMenuGroup( + @RequestBody @Valid MenuGroupCreate.Request request, + BindingResult bindingResult + ) { + service.createMenuGroup( + MenuGroupCreateCommand.builder() + .name(request.getName()) + .uri(request.getUri()) + .sortOrder(request.getSortOrder()) + .build() + ); + + return ResponseEntity.ok(MenuGroupCreate.Response.success()); + } + + @PostMapping("/update/menu-group") + public ResponseEntity updateMenuGroup( + @RequestBody @Valid MenuGroupUpdate.Request request, + BindingResult bindingResult + ) { + service.updateMenuGroup( + MenuGroupUpdateCommand.builder() + .id(request.getId()) + .name(request.getName()) + .uri(request.getUri()) + .sortOrder(request.getSortOrder()) + .build() + ); + + return ResponseEntity.ok(MenuGroupCreate.Response.success()); + } + + @PostMapping("/delete/menu-group") + public ResponseEntity deleteMenuGroup( + @RequestBody @Valid MenuGroupDelete.Request request, + BindingResult bindingResult + ) { + service.deleteMenuGroup(request.getId()); + + return ResponseEntity.ok(MenuGroupDelete.Response.success()); + } + + @PostMapping("/create/menu") + public ResponseEntity createMenu( + @RequestBody @Valid MenuCreate.Request request, + BindingResult bindingResult + ) { + service.createMenu( + MenuCreateCommand.builder() + .menuGroupId(request.getMenuGroupId()) + .name(request.getName()) + .uri(request.getUri()) + .sortOrder(request.getSortOrder()) + .build() + ); + return ResponseEntity.ok(MenuCreate.Response.success()); + } + + @PostMapping("/update/menu") + public ResponseEntity updateMenu( + @RequestBody @Valid MenuUpdate.Request request, + BindingResult bindingResult + ) { + service.updateMenu( + MenuUpdateCommand.builder() + .id(request.getId()) + .name(request.getName()) + .uri(request.getUri()) + .sortOrder(request.getSortOrder()) + .build() + ); + + return ResponseEntity.ok(MenuGroupCreate.Response.success()); + } + + @PostMapping("/delete/menu") + public ResponseEntity deleteMenu( + @RequestBody @Valid MenuDelete.Request request, + BindingResult bindingResult + ) { + service.deleteMenu(request.getId()); + + return ResponseEntity.ok(MenuDelete.Response.success()); + } + +} 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/MenuService.java new file mode 100644 index 0000000..4d776fa --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuService.java @@ -0,0 +1,89 @@ +package com.bpgroup.poc.admin.web.main.admin.menu; + +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 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 MenuService { + + private final MenuGroupRepository menuGroupRepository; + private final MenuRepository menuRepository; + + public void createMenuGroup( + @NotNull @Valid MenuGroupCreateCommand command + ) { + menuGroupRepository.save(command.toEntity()); + } + + public void updateMenuGroup( + @NotNull @Valid MenuGroupUpdateCommand command + ) { + Optional findMenuGroup = menuGroupRepository.findById(command.getId()); + if (findMenuGroup.isEmpty()) { + throw new IllegalArgumentException("MenuGroup not found"); + } + + findMenuGroup.get().update(command.toEntity()); + } + + public void deleteMenuGroup(@NotNull Long id) { + Optional findMenuGroup = menuGroupRepository.findById(id); + if (findMenuGroup.isEmpty()) { + throw new IllegalArgumentException("MenuGroup not found"); + } + + menuGroupRepository.deleteById(id); + } + + public void createMenu( + @NotNull @Valid MenuCreateCommand command + ) { + Optional findMenuGroup = menuGroupRepository.findById(command.getMenuGroupId()); + if (findMenuGroup.isEmpty()) { + throw new IllegalArgumentException("MenuGroup not found"); + } + + Menu menu = command.toEntity(); + MenuGroup menuGroup = findMenuGroup.get(); + menuGroup.addMenu(menu); + + menuRepository.save(menu); + } + + public void updateMenu( + @NotNull @Valid MenuUpdateCommand build + ) { + Optional findMenu = menuRepository.findById(build.getId()); + if (findMenu.isEmpty()) { + throw new IllegalArgumentException("Menu not found"); + } + + findMenu.get().update(build.toEntity()); + } + + public void deleteMenu(@NotNull Long id) { + Optional findMenu = menuRepository.findById(id); + if (findMenu.isEmpty()) { + throw new IllegalArgumentException("Menu not found"); + } + + menuRepository.deleteById(id); + } +} 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/command/MenuCreateCommand.java new file mode 100644 index 0000000..cdcd5ec --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuCreateCommand.java @@ -0,0 +1,42 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.command; + +import com.bpgroup.poc.admin.domain.admin.entity.Menu; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class MenuCreateCommand { + @NotNull + private Long menuGroupId; + + @NotBlank + private String uri; + + @NotBlank + private String name; + + @NotNull + private Integer sortOrder; + + @Builder + public static MenuCreateCommand of(Long menuGroupId, String uri, String name, Integer sortOrder) { + MenuCreateCommand command = new MenuCreateCommand(); + command.menuGroupId = menuGroupId; + command.uri = uri; + command.name = name; + command.sortOrder = sortOrder; + return command; + } + + public Menu toEntity() { + return Menu.builder() + .uri(uri) + .name(name) + .sortOrder(sortOrder) + .build(); + } +} 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/command/MenuGroupCreateCommand.java new file mode 100644 index 0000000..0fdfc53 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupCreateCommand.java @@ -0,0 +1,36 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.command; + +import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class MenuGroupCreateCommand { + @NotBlank + private String uri; + @NotBlank + private String name; + @NotNull + private Integer sortOrder; + + @Builder + public static MenuGroupCreateCommand of(String uri, String name, Integer sortOrder) { + MenuGroupCreateCommand command = new MenuGroupCreateCommand(); + command.uri = uri; + command.name = name; + command.sortOrder = sortOrder; + return command; + } + + public MenuGroup toEntity() { + return MenuGroup.builder() + .uri(uri) + .name(name) + .sortOrder(sortOrder) + .build(); + } +} 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/command/MenuGroupUpdateCommand.java new file mode 100644 index 0000000..dd240f0 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuGroupUpdateCommand.java @@ -0,0 +1,39 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.command; + +import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class MenuGroupUpdateCommand { + @NotNull + private Long id; + @NotBlank + private String uri; + @NotBlank + private String name; + @NotNull + private Integer sortOrder; + + @Builder + public static MenuGroupUpdateCommand of(Long id, String uri, String name, Integer sortOrder) { + MenuGroupUpdateCommand command = new MenuGroupUpdateCommand(); + command.id = id; + command.uri = uri; + command.name = name; + command.sortOrder = sortOrder; + return command; + } + + public MenuGroup toEntity() { + return MenuGroup.builder() + .uri(uri) + .name(name) + .sortOrder(sortOrder) + .build(); + } +} 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/command/MenuUpdateCommand.java new file mode 100644 index 0000000..cd11853 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/command/MenuUpdateCommand.java @@ -0,0 +1,41 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.command; + +import com.bpgroup.poc.admin.domain.admin.entity.Menu; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class MenuUpdateCommand { + @NotNull + private Long id; + @NotBlank + private String uri; + @NotBlank + private String name; + @NotNull + private Integer sortOrder; + + @Builder + public static MenuUpdateCommand of(Long id, String uri, String name, Integer sortOrder) { + MenuUpdateCommand command = new MenuUpdateCommand(); + command.id = id; + command.uri = uri; + command.name = name; + command.sortOrder = sortOrder; + return command; + } + + public Menu toEntity() { + return Menu.builder() + .uri(uri) + .name(name) + .sortOrder(sortOrder) + .build(); + } + + +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuCreate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuCreate.java new file mode 100644 index 0000000..5c707e6 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuCreate.java @@ -0,0 +1,45 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.reqres; + +import com.bpgroup.poc.admin.web.common.CommonResponse; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +public class MenuCreate { + + @Data + public static class Request { + @NotNull + private Long menuGroupId; + @NotBlank + private String uri; + @NotBlank + private String name; + @NotNull + private Integer sortOrder; + } + + @Getter + @ToString + public static class Response extends CommonResponse { + @Builder + public static Response success() { + Response response = new Response(); + response.resultCode = "0000"; + response.resultMessage = "Success"; + return response; + } + + @Builder + public static Response fail() { + Response response = new Response(); + response.resultCode = "9999"; + response.resultMessage = "Fail"; + return response; + } + + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuDelete.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuDelete.java new file mode 100644 index 0000000..42ce9bf --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuDelete.java @@ -0,0 +1,36 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.reqres; + +import com.bpgroup.poc.admin.web.common.CommonResponse; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +public class MenuDelete { + @Data + public static class Request { + @NotNull + private Long id; + } + + @Getter + @ToString + public static class Response extends CommonResponse { + @Builder + public static Response success() { + Response response = new Response(); + response.resultCode = "0000"; + response.resultMessage = "Success"; + return response; + } + + @Builder + public static Response fail(String resultMessage) { + Response response = new Response(); + response.resultCode = "9999"; + response.resultMessage = resultMessage; + return response; + } + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupCreate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupCreate.java new file mode 100644 index 0000000..f1a1818 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupCreate.java @@ -0,0 +1,46 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.reqres; + +import com.bpgroup.poc.admin.web.common.CommonResponse; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +public class MenuGroupCreate { + + @Data + public static class Request { + + @NotBlank + private String uri; + + @NotBlank + private String name; + + @NotNull + private Integer sortOrder; + } + + @Getter + @ToString + public static class Response extends CommonResponse { + @Builder + public static Response success() { + Response response = new Response(); + response.resultCode = "0000"; + response.resultMessage = "Success"; + return response; + } + + @Builder + public static Response fail() { + Response response = new Response(); + response.resultCode = "9999"; + response.resultMessage = "Fail"; + return response; + } + + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupDelete.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupDelete.java new file mode 100644 index 0000000..f85b6e5 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupDelete.java @@ -0,0 +1,36 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.reqres; + +import com.bpgroup.poc.admin.web.common.CommonResponse; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +public class MenuGroupDelete { + @Data + public static class Request { + @NotNull + private Long id; + } + + @Getter + @ToString + public static class Response extends CommonResponse { + @Builder + public static Response success() { + Response response = new Response(); + response.resultCode = "0000"; + response.resultMessage = "Success"; + return response; + } + + @Builder + public static Response fail(String resultMessage) { + Response response = new Response(); + response.resultCode = "9999"; + response.resultMessage = resultMessage; + return response; + } + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupUpdate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupUpdate.java new file mode 100644 index 0000000..39d2b0b --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuGroupUpdate.java @@ -0,0 +1,44 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.reqres; + +import com.bpgroup.poc.admin.web.common.CommonResponse; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +public class MenuGroupUpdate { + + @Data + public static class Request { + @NotNull + private Long id; + @NotBlank + private String uri; + @NotBlank + private String name; + @NotNull + private Integer sortOrder; + } + + @Getter + @ToString + public static class Response extends CommonResponse { + @Builder + public static Response success() { + Response response = new Response(); + response.resultCode = "0000"; + response.resultMessage = "Success"; + return response; + } + + @Builder + public static Response fail(String resultMessage) { + Response response = new Response(); + response.resultCode = "9999"; + response.resultMessage = resultMessage; + return response; + } + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuUpdate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuUpdate.java new file mode 100644 index 0000000..7bde76e --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/reqres/MenuUpdate.java @@ -0,0 +1,44 @@ +package com.bpgroup.poc.admin.web.main.admin.menu.reqres; + +import com.bpgroup.poc.admin.web.common.CommonResponse; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +public class MenuUpdate { + + @Data + public static class Request { + @NotNull + private Long id; + @NotBlank + private String uri; + @NotBlank + private String name; + @NotNull + private Integer sortOrder; + } + + @Getter + @ToString + public static class Response extends CommonResponse { + @Builder + public static Response success() { + Response response = new Response(); + response.resultCode = "0000"; + response.resultMessage = "Success"; + return response; + } + + @Builder + public static Response fail(String resultMessage) { + Response response = new Response(); + response.resultCode = "9999"; + response.resultMessage = resultMessage; + return response; + } + } +} 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 new file mode 100644 index 0000000..486ee01 --- /dev/null +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java @@ -0,0 +1,248 @@ +package com.bpgroup.poc.admin.web.main.admin.menu; + +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.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 jakarta.validation.ConstraintViolationException; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +@Transactional +public class MenuServiceTest extends MariaDBTestEnv { + + @Autowired + private MenuService menuService; + + @Autowired + private MenuGroupRepository menuGroupRepository; + + @Autowired + private MenuRepository menuRepository; + + @BeforeEach + public void setUp() { + menuGroupRepository.deleteAll(); + menuRepository.deleteAll(); + } + + @Test + @DisplayName("MenuGroup 생성 테스트") + public void createMenuGroupTest() { + // given + MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); + + // when + menuService.createMenuGroup(groupCreateCommand); + flushAndClear(); + + // then + Assertions.assertThat(menuGroupRepository.findAll()).hasSize(1); + } + + @Test + @DisplayName("MenuGroup 수정 테스트") + public void updateMenuGroupTest() { + // given + MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); + menuService.createMenuGroup(groupCreateCommand); + flushAndClear(); + + MenuGroupUpdateCommand groupUpdateCommand = MenuGroupUpdateCommand.builder() + .id(menuGroupRepository.findAll().get(0).getId()) + .uri("uri2") + .name("name2") + .sortOrder(1) + .build(); + + // when + menuService.updateMenuGroup(groupUpdateCommand); + flushAndClear(); + + // then + MenuGroup findMenuGroup = menuGroupRepository.findAll().get(0); + Assertions.assertThat(findMenuGroup.getUri()).isEqualTo("uri2"); + Assertions.assertThat(findMenuGroup.getName()).isEqualTo("name2"); + } + + @Test + @DisplayName("MenuGroup 삭제 테스트") + public void deleteMenuGroupTest() { + // given + MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); + menuService.createMenuGroup(groupCreateCommand); + flushAndClear(); + + // when + menuService.deleteMenuGroup(menuGroupRepository.findAll().get(0).getId()); + flushAndClear(); + + // then + Assertions.assertThat(menuGroupRepository.findAll()).hasSize(0); + } + + @Test + @DisplayName("MenuGroup 삭제 시 Menu 동시 삭제 테스트") + public void deleteMenuGroupWithMenuTest() { + // given + MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); + menuService.createMenuGroup(groupCreateCommand); + flushAndClear(); + + MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() + .menuGroupId(menuGroupRepository.findAll().get(0).getId()) + .uri("uri") + .name("name") + .sortOrder(1) + .build(); + + menuService.createMenu(menuCreateCommand); + flushAndClear(); + + // when + menuService.deleteMenuGroup(menuGroupRepository.findAll().get(0).getId()); + flushAndClear(); + + // then + Assertions.assertThat(menuGroupRepository.findAll()).hasSize(0); + Assertions.assertThat(menuRepository.findAll()).hasSize(0); + } + + @Test + @DisplayName("Menu 생성 테스트") + public void createGroupTest() { + // given + MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); + menuService.createMenuGroup(groupCreateCommand); + flushAndClear(); + + MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() + .menuGroupId(menuGroupRepository.findAll().get(0).getId()) + .uri("uri") + .name("name") + .sortOrder(1) + .build(); + + // when + menuService.createMenu(menuCreateCommand); + flushAndClear(); + + // then + Assertions.assertThat(menuRepository.findAll()).hasSize(1); + } + + @Test + @DisplayName("Menu 수정 테스트") + public void updateMenuTest() { + // given + MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); + menuService.createMenuGroup(groupCreateCommand); + flushAndClear(); + + MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() + .menuGroupId(menuGroupRepository.findAll().get(0).getId()) + .uri("uri") + .name("name") + .sortOrder(1) + .build(); + + menuService.createMenu(menuCreateCommand); + flushAndClear(); + + MenuUpdateCommand menuUpdateCommand = MenuUpdateCommand.builder() + .id(menuRepository.findAll().get(0).getId()) + .uri("uri2") + .name("name2") + .sortOrder(1) + .build(); + + // when + menuService.updateMenu(menuUpdateCommand); + flushAndClear(); + + // then + Menu findMenu = menuRepository.findAll().get(0); + Assertions.assertThat(findMenu.getUri()).isEqualTo("uri2"); + Assertions.assertThat(findMenu.getName()).isEqualTo("name2"); + } + + @Test + @DisplayName("Menu 삭제 테스트") + public void deleteMenuTest() { + // given + MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); + menuService.createMenuGroup(groupCreateCommand); + flushAndClear(); + + MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() + .menuGroupId(menuGroupRepository.findAll().get(0).getId()) + .uri("uri") + .name("name") + .sortOrder(1) + .build(); + + menuService.createMenu(menuCreateCommand); + flushAndClear(); + + // when + menuService.deleteMenu(menuRepository.findAll().get(0).getId()); + flushAndClear(); + + // then + Assertions.assertThat(menuRepository.findAll()).hasSize(0); + } + + @Test + @DisplayName("MenuService method 호출 유효성 검사 테스트") + public 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(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(null).name("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); + + // menuGroup delete + 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, null, "name", 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(null).name("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); + + // menu delete + assertThatThrownBy(() -> menuService.deleteMenu(null)).isInstanceOf(ConstraintViolationException.class); + } + + +} From 354cc7e4978b8f5f76642911573b5c0efb3efd4b Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 10:54:39 +0900 Subject: [PATCH 2/8] 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); + } + + } From 49c2757e658a143551005e85e85927594bf0207b Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 10:58:43 +0900 Subject: [PATCH 3/8] =?UTF-8?q?admin:=20refactoring=20entity=20package=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poc/admin/domain/{ => entity}/BaseEntity.java | 2 +- .../administrator}/Administrator.java | 4 ++-- .../administrator}/AdministratorRepository.java | 2 +- .../administrator}/AdministratorRole.java | 5 +++-- .../exception/DuplicationAdministratorException.java | 2 +- .../exception/NotFoundAdministratorException.java | 2 +- .../domain/{admin/entity => entity/menu}/Menu.java | 4 ++-- .../{admin/entity => entity/menu}/MenuGroup.java | 4 ++-- .../entity => entity/menu}/MenuGroupRepository.java | 2 +- .../entity => entity/menu}/MenuRepository.java | 2 +- .../domain/{admin/entity => entity/role}/Role.java | 4 ++-- .../{admin/entity => entity/role}/RoleMenu.java | 5 +++-- .../entity => entity/role}/RoleRepository.java | 2 +- .../authentication/service/LoginService.java | 4 ++-- .../admin/web/advice/menu/MenuQueryRepository.java | 12 ++++++------ .../AdministratorManagementQueryRepository.java | 3 ++- .../service/AdministratorCreateCommand.java | 2 +- .../service/AdministratorManagementService.java | 4 ++-- .../service/AdministratorUpdateCommand.java | 2 +- .../main/admin/menu/service/MenuCreateCommand.java | 2 +- .../admin/menu/service/MenuGroupCreateCommand.java | 2 +- .../admin/menu/service/MenuGroupUpdateCommand.java | 2 +- .../web/main/admin/menu/service/MenuService.java | 12 ++++-------- .../main/admin/menu/service/MenuUpdateCommand.java | 2 +- .../main/admin/role/service/RoleCreateCommand.java | 2 +- .../web/main/admin/role/service/RoleService.java | 4 ++-- .../main/admin/role/service/RoleUpdateCommand.java | 2 +- .../administrator/AdministratorServiceTest.java | 4 ++-- .../admin/web/main/admin/menu/MenuServiceTest.java | 8 ++++---- .../admin/web/main/admin/role/RoleServiceTest.java | 4 ++-- 30 files changed, 55 insertions(+), 56 deletions(-) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{ => entity}/BaseEntity.java (93%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/administrator}/Administrator.java (91%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/administrator}/AdministratorRepository.java (80%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/administrator}/AdministratorRole.java (79%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin => entity}/exception/DuplicationAdministratorException.java (79%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin => entity}/exception/NotFoundAdministratorException.java (78%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/menu}/Menu.java (91%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/menu}/MenuGroup.java (92%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/menu}/MenuGroupRepository.java (73%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/menu}/MenuRepository.java (72%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/role}/Role.java (89%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/role}/RoleMenu.java (78%) rename poc/admin/src/main/java/com/bpgroup/poc/admin/domain/{admin/entity => entity/role}/RoleRepository.java (72%) diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/BaseEntity.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/BaseEntity.java similarity index 93% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/BaseEntity.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/BaseEntity.java index e76b888..54422f2 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/BaseEntity.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/BaseEntity.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain; +package com.bpgroup.poc.admin.domain.entity; import jakarta.persistence.Column; import jakarta.persistence.EntityListeners; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Administrator.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java similarity index 91% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Administrator.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java index f7fc3aa..832a684 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Administrator.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.administrator; -import com.bpgroup.poc.admin.domain.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.BaseEntity; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdministratorRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRepository.java similarity index 80% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdministratorRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRepository.java index b81a4ad..07f8756 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdministratorRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.administrator; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdministratorRole.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java similarity index 79% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdministratorRole.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java index 29540a5..56392dc 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/AdministratorRole.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java @@ -1,6 +1,7 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.administrator; -import com.bpgroup.poc.admin.domain.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.role.Role; import jakarta.persistence.*; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/exception/DuplicationAdministratorException.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/DuplicationAdministratorException.java similarity index 79% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/exception/DuplicationAdministratorException.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/DuplicationAdministratorException.java index 356b127..554ffc0 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/exception/DuplicationAdministratorException.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/DuplicationAdministratorException.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.exception; +package com.bpgroup.poc.admin.domain.entity.exception; public class DuplicationAdministratorException extends RuntimeException { public DuplicationAdministratorException(String loginId) { diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/exception/NotFoundAdministratorException.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/NotFoundAdministratorException.java similarity index 78% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/exception/NotFoundAdministratorException.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/NotFoundAdministratorException.java index 2f2a2da..ffd4fe6 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/exception/NotFoundAdministratorException.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/NotFoundAdministratorException.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.exception; +package com.bpgroup.poc.admin.domain.entity.exception; import com.bpgroup.poc.admin.domain.DomainException; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Menu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/Menu.java similarity index 91% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Menu.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/Menu.java index 81afce1..300eee5 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Menu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/Menu.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.menu; -import com.bpgroup.poc.admin.domain.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.BaseEntity; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroup.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroup.java similarity index 92% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroup.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroup.java index b6029d7..1de2b60 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroup.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroup.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.menu; -import com.bpgroup.poc.admin.domain.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.BaseEntity; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroupRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroupRepository.java similarity index 73% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroupRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroupRepository.java index cdc5f47..6fe9035 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuGroupRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroupRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.menu; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuRepository.java similarity index 72% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuRepository.java index c3d12dd..63fc004 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/MenuRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.menu; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Role.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java similarity index 89% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Role.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java index b83381f..ea110da 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/Role.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.role; -import com.bpgroup.poc.admin.domain.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.BaseEntity; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/RoleMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java similarity index 78% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/RoleMenu.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java index 0779612..bbe0ee1 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/RoleMenu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java @@ -1,6 +1,7 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.role; -import com.bpgroup.poc.admin.domain.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.menu.Menu; import jakarta.persistence.*; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/RoleRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleRepository.java similarity index 72% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/RoleRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleRepository.java index 3747729..cb12527 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/admin/entity/RoleRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.admin.entity; +package com.bpgroup.poc.admin.domain.entity.role; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java index 4769cd7..1c90bc9 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java @@ -1,7 +1,7 @@ package com.bpgroup.poc.admin.security.authentication.service; -import com.bpgroup.poc.admin.domain.admin.entity.Administrator; -import com.bpgroup.poc.admin.domain.admin.entity.AdministratorRepository; +import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; +import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.security.authentication.service.exception.AdministratorNotFoundException; import com.bpgroup.poc.admin.security.authentication.service.exception.DoNotHaveAnyMenuException; import com.bpgroup.poc.admin.security.authentication.service.exception.InvalidPasswordException; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java index bc50a50..55f5b6d 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java @@ -7,12 +7,12 @@ import org.springframework.stereotype.Repository; import java.util.*; -import static com.bpgroup.poc.admin.domain.admin.entity.QAdministrator.administrator; -import static com.bpgroup.poc.admin.domain.admin.entity.QAdministratorRole.administratorRole; -import static com.bpgroup.poc.admin.domain.admin.entity.QMenu.menu; -import static com.bpgroup.poc.admin.domain.admin.entity.QMenuGroup.menuGroup; -import static com.bpgroup.poc.admin.domain.admin.entity.QRole.role; -import static com.bpgroup.poc.admin.domain.admin.entity.QRoleMenu.roleMenu; +import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministrator.administrator; +import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministratorRole.administratorRole; +import static com.bpgroup.poc.admin.domain.entity.menu.QMenu.menu; +import static com.bpgroup.poc.admin.domain.entity.menu.QMenuGroup.menuGroup; +import static com.bpgroup.poc.admin.domain.entity.role.QRole.role; +import static com.bpgroup.poc.admin.domain.entity.role.QRoleMenu.roleMenu; @Repository @RequiredArgsConstructor 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 9ef2d17..6303968 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 @@ -8,7 +8,8 @@ import org.springframework.stereotype.Repository; import java.util.List; -import static com.bpgroup.poc.admin.domain.admin.entity.QAdministrator.administrator; +import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministrator.administrator; + @Repository @RequiredArgsConstructor diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java index 334d411..4afd243 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java @@ -1,6 +1,6 @@ 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.entity.administrator.Administrator; import jakarta.validation.constraints.NotBlank; import lombok.Builder; import lombok.Getter; 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 index 23be259..e3b8f89 100644 --- 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 @@ -1,7 +1,7 @@ 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 com.bpgroup.poc.admin.domain.entity.administrator.Administrator; +import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; 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/management/service/AdministratorUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java index 2465f1b..1c6d59e 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java @@ -1,6 +1,6 @@ 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.entity.administrator.Administrator; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java index f33077f..dd34fe9 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java @@ -1,6 +1,6 @@ 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.entity.menu.Menu; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java index 0e223f2..cd07aaf 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java @@ -1,6 +1,6 @@ package com.bpgroup.poc.admin.web.main.admin.menu.service; -import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java index 0f9f1bb..991a8d0 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java @@ -1,6 +1,6 @@ package com.bpgroup.poc.admin.web.main.admin.menu.service; -import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java index 98fdaee..8b9b84f 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java @@ -1,13 +1,9 @@ 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.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 com.bpgroup.poc.admin.domain.entity.menu.Menu; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository; +import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; 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/service/MenuUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java index 032c11c..2617dd1 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java @@ -1,6 +1,6 @@ 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.entity.menu.Menu; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java index 2eee1d5..62b074e 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java @@ -1,6 +1,6 @@ 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.entity.role.Role; import jakarta.validation.constraints.NotBlank; import lombok.Builder; import lombok.Getter; 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 index d15a3cd..5ae3bbd 100644 --- 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 @@ -1,7 +1,7 @@ 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.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.web.main.admin.role.RoleQueryRepository; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java index e6362f5..920c9de 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java @@ -1,6 +1,6 @@ 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.entity.role.Role; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; 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 ab61f76..5d3c6da 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,7 +1,7 @@ package com.bpgroup.poc.admin.web.main.admin.administrator; -import com.bpgroup.poc.admin.domain.admin.entity.Administrator; -import com.bpgroup.poc.admin.domain.admin.entity.AdministratorRepository; +import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; +import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateCommand; import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateResult; 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 a0ea6bd..10f90b6 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 @@ -1,9 +1,9 @@ package com.bpgroup.poc.admin.web.main.admin.menu; -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.domain.entity.menu.Menu; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository; +import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; import com.bpgroup.poc.admin.web.main.admin.menu.service.*; import jakarta.validation.ConstraintViolationException; 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 2d676ed..14a527d 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 @@ -1,7 +1,7 @@ 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.entity.role.Role; +import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateCommand; import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateResult; From aaf1537f060c678719b335ad15747b3b54f30d8e Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 12:27:20 +0900 Subject: [PATCH 4/8] =?UTF-8?q?admin:=20=EA=B6=8C=ED=95=9C=20=EB=82=B4=20?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EC=B6=94=EA=B0=80=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poc/admin/domain/entity/role/Role.java | 4 + .../admin/domain/entity/role/RoleMenu.java | 8 ++ .../entity/role/RoleMenuRepository.java | 6 + .../main/admin/role/RoleRestController.java | 31 ++++- .../main/admin/role/reqres/RoleAddMenu.java | 41 ++++++ .../role/service/RoleAddMenuCommand.java | 24 ++++ .../main/admin/role/service/RoleService.java | 44 +++++-- .../web/main/admin/role/RoleServiceTest.java | 117 ++++++++++++++---- 8 files changed, 242 insertions(+), 33 deletions(-) create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenuRepository.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleAddMenuCommand.java diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java index ea110da..816cf87 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java @@ -39,4 +39,8 @@ public class Role extends BaseEntity { this.name = updateRole.name; this.description = updateRole.description; } + + public void addRoleMenu(RoleMenu roleMenu) { + this.roleMenus.add(roleMenu); + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java index bbe0ee1..68353b0 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java @@ -3,6 +3,7 @@ package com.bpgroup.poc.admin.domain.entity.role; import com.bpgroup.poc.admin.domain.entity.BaseEntity; import com.bpgroup.poc.admin.domain.entity.menu.Menu; import jakarta.persistence.*; +import lombok.Builder; import lombok.Getter; @Getter @@ -22,4 +23,11 @@ public class RoleMenu extends BaseEntity { @JoinColumn(name = "menu_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Menu menu; + @Builder + public static RoleMenu of(Role role, Menu menu) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.role = role; + roleMenu.menu = menu; + return roleMenu; + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenuRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenuRepository.java new file mode 100644 index 0000000..bc8c421 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenuRepository.java @@ -0,0 +1,6 @@ +package com.bpgroup.poc.admin.domain.entity.role; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface RoleMenuRepository extends JpaRepository { +} 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 c58b939..ec27fbe 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 @@ -1,12 +1,10 @@ package com.bpgroup.poc.admin.web.main.admin.role; +import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleAddMenu; 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 com.bpgroup.poc.admin.web.main.admin.role.service.*; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -16,6 +14,10 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + @RestController @RequiredArgsConstructor @RequestMapping("/admin/role") @@ -73,4 +75,25 @@ public class RoleRestController { return ResponseEntity.ok(RoleDelete.Response.success()); } + /** + * 권한 내 메뉴 추가 + */ + @PostMapping("/add/menu") + public ResponseEntity addMenu( + @RequestBody @Valid List request, + BindingResult bindingResult + ) { + Set commands = request.stream() + .map(c -> RoleAddMenuCommand.builder() + .roleId(c.getRoleId()) + .menuId(c.getMenuId()) + .build() + ) + .collect(Collectors.toSet()); + + roleService.addMenu(commands); + + return ResponseEntity.ok(RoleAddMenu.Response.success()); + } + } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java new file mode 100644 index 0000000..16ffd67 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java @@ -0,0 +1,41 @@ +package com.bpgroup.poc.admin.web.main.admin.role.reqres; + +import com.bpgroup.poc.admin.web.common.CommonResponse; +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +public class RoleAddMenu { + + @Data + public static class Request { + @NotNull + private Long roleId; + @NotNull + private Long menuId; + + } + + @Getter + @ToString + public static class Response extends CommonResponse { + @Builder + public static Response success() { + Response response = new Response(); + response.resultCode = "0000"; + response.resultMessage = "Success"; + return response; + } + + @Builder + public static Response fail(String resultMessage) { + Response response = new Response(); + response.resultCode = "9999"; + response.resultMessage = resultMessage; + return response; + } + + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleAddMenuCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleAddMenuCommand.java new file mode 100644 index 0000000..fa02026 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleAddMenuCommand.java @@ -0,0 +1,24 @@ +package com.bpgroup.poc.admin.web.main.admin.role.service; + +import jakarta.validation.constraints.NotNull; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class RoleAddMenuCommand { + @NotNull + private Long roleId; + @NotNull + private Long menuId; + + @Builder + public static RoleAddMenuCommand of(Long roleId, Long menuId) { + RoleAddMenuCommand command = new RoleAddMenuCommand(); + command.roleId = roleId; + command.menuId = menuId; + return command; + } + +} 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 index 5ae3bbd..538d411 100644 --- 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 @@ -1,8 +1,11 @@ package com.bpgroup.poc.admin.web.main.admin.role.service; +import com.bpgroup.poc.admin.domain.entity.menu.Menu; +import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; import com.bpgroup.poc.admin.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.entity.role.RoleMenu; +import com.bpgroup.poc.admin.domain.entity.role.RoleMenuRepository; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; -import com.bpgroup.poc.admin.web.main.admin.role.RoleQueryRepository; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; @@ -11,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.Optional; +import java.util.Set; @Service @RequiredArgsConstructor @@ -18,8 +22,9 @@ import java.util.Optional; @Transactional public class RoleService { - private final RoleRepository repository; - private final RoleQueryRepository queryRepository; + private final RoleRepository roleRepository; + private final MenuRepository menuRepository; + private final RoleMenuRepository roleMenuRepository; /** * ROLE 생성 @@ -27,7 +32,7 @@ public class RoleService { public RoleCreateResult create( @NotNull @Valid RoleCreateCommand command ) { - Role role = repository.save(command.toEntity()); + Role role = roleRepository.save(command.toEntity()); return RoleCreateResult.builder() .id(role.getId()) @@ -40,7 +45,7 @@ public class RoleService { public void update( @NotNull @Valid RoleUpdateCommand command ) { - Optional findRole = repository.findById(command.getId()); + Optional findRole = roleRepository.findById(command.getId()); if (findRole.isEmpty()) { throw new IllegalArgumentException("Role Not Found"); } @@ -50,11 +55,36 @@ public class RoleService { } public void delete(@NotNull Long id) { - Optional findRole = repository.findById(id); + Optional findRole = roleRepository.findById(id); if (findRole.isEmpty()) { throw new IllegalArgumentException("Role Not Found"); } - repository.deleteById(id); + roleRepository.deleteById(id); + } + + public void addMenu( + @NotNull @Valid Set commands + ) { + RoleAddMenuCommand command = commands.stream().findFirst().orElseThrow(); + Optional findRole = roleRepository.findById(command.getRoleId()); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Role Not Found"); + } + + Role role = findRole.get(); + commands.forEach(c -> { + Optional findMenu = menuRepository.findById(c.getMenuId()); + if (findMenu.isEmpty()) { + throw new IllegalArgumentException("Menu Not Found"); + } + + Menu menu = findMenu.get(); + RoleMenu roleMenu = RoleMenu.of(role, menu); + role.addRoleMenu(roleMenu); + + roleMenuRepository.save(roleMenu); + }); + } } 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 14a527d..92ec302 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 @@ -1,12 +1,14 @@ package com.bpgroup.poc.admin.web.main.admin.role; +import com.bpgroup.poc.admin.domain.entity.menu.Menu; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; +import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository; +import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; import com.bpgroup.poc.admin.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.entity.role.RoleMenuRepository; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; -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 com.bpgroup.poc.admin.web.main.admin.role.service.*; import jakarta.validation.ConstraintViolationException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -14,6 +16,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import java.util.Set; + import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -27,9 +31,21 @@ class RoleServiceTest extends MariaDBTestEnv { @Autowired private RoleRepository roleRepository; + @Autowired + private MenuGroupRepository menuGroupRepository; + + @Autowired + private MenuRepository menuRepository; + + @Autowired + private RoleMenuRepository roleMenuRepository; + @BeforeEach void setUp() { roleRepository.deleteAll(); + menuRepository.deleteAll(); + menuGroupRepository.deleteAll(); + roleMenuRepository.deleteAll(); } @Test @@ -52,16 +68,10 @@ class RoleServiceTest extends MariaDBTestEnv { @DisplayName("Role 수정 테스트") void updateRoleTest() { // given - RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder() - .name("TEST") - .description("TEST") - .build(); - - RoleCreateResult createResult = roleService.create(roleCreateCommand); - flushAndClear(); + Long roleId = createRole(); RoleUpdateCommand roleUpdateCommand = RoleUpdateCommand.builder() - .id(createResult.getId()) + .id(roleId) .name("TEST2") .description("TEST2") .build(); @@ -71,7 +81,7 @@ class RoleServiceTest extends MariaDBTestEnv { flushAndClear(); // then - Role role = roleRepository.findById(createResult.getId()).orElseThrow(); + Role role = roleRepository.findById(roleId).orElseThrow(); assertThat(role.getName()).isEqualTo("TEST2"); assertThat(role.getDescription()).isEqualTo("TEST2"); } @@ -80,20 +90,79 @@ class RoleServiceTest extends MariaDBTestEnv { @DisplayName("Role 삭제 테스트") void deleteRoleTest() { // given - RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder() - .name("TEST") - .description("TEST") - .build(); - - RoleCreateResult createResult = roleService.create(roleCreateCommand); - flushAndClear(); + Long roleId = createRole(); // when - roleService.delete(createResult.getId()); + roleService.delete(roleId); flushAndClear(); // then - assertThat(roleRepository.findById(createResult.getId())).isEmpty(); + assertThat(roleRepository.findById(roleId)).isEmpty(); + } + + @Test + @DisplayName("Role Menu 추가 테스트") + void addMenuTest() { + // given + Long roleId = createRole(); + MenuGroup menuGroup = createMenus(); + Menu menu1 = createMenu(menuGroup); + Menu menu2 = createMenu(menuGroup); + + Set roleAddMenuCommands = Set.of( + RoleAddMenuCommand.builder() + .roleId(roleId) + .menuId(menu1.getId()) + .build(), + RoleAddMenuCommand.builder() + .roleId(roleId) + .menuId(menu2.getId()) + .build() + ); + + // when + roleService.addMenu(roleAddMenuCommands); + flushAndClear(); + + // then + assertThat(roleMenuRepository.findAll()).hasSize(2); + } + + private Long createRole() { + Role role = roleRepository.save( + Role.builder() + .name("TEST") + .description("TEST") + .build() + ); + flushAndClear(); + return role.getId(); + } + + private MenuGroup createMenus() { + MenuGroup menuGroup = menuGroupRepository.save( + MenuGroup.builder() + .uri("TEST") + .name("TEST") + .sortOrder(1) + .build() + ); + + flushAndClear(); + return menuGroup; + } + + private Menu createMenu(MenuGroup menuGroup) { + Menu menu = Menu.builder() + .uri("TEST") + .name("TEST") + .sortOrder(1) + .build(); + menu.setMenuGroup(menuGroup); + Menu saveMenu = menuRepository.save(menu); + + flushAndClear(); + return saveMenu; } @Test @@ -110,6 +179,10 @@ class RoleServiceTest extends MariaDBTestEnv { // delete assertThatThrownBy(() -> roleService.delete(null)).isInstanceOf(ConstraintViolationException.class); + + // add Role Menu + assertThatThrownBy(() -> roleService.addMenu(Set.of(RoleAddMenuCommand.builder().roleId(null).menuId(null).build()))).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> roleService.addMenu(Set.of(RoleAddMenuCommand.builder().roleId(1L).menuId(null).build()))).isInstanceOf(ConstraintViolationException.class); } From 63f03ca1e6795464bc1cbad7d5b88dc30b438596 Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 13:42:42 +0900 Subject: [PATCH 5/8] =?UTF-8?q?admin:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdministratorServiceTest.java | 71 +++++---- .../web/main/admin/menu/MenuServiceTest.java | 144 +++++++++--------- .../web/main/admin/role/RoleServiceTest.java | 92 ++++++----- 3 files changed, 154 insertions(+), 153 deletions(-) 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 5d3c6da..e389e61 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 @@ -8,6 +8,7 @@ import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCrea 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.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -36,16 +37,15 @@ public class AdministratorServiceTest extends MariaDBTestEnv { @DisplayName("Administrator 등록 테스트") @Test public void createAdministratorTest() { - // given - AdministratorCreateCommand command = AdministratorCreateCommand.builder() - .loginId("test") - .password("test") - .email("test") - .name("test") - .build(); - // when - AdministratorCreateResult createResult = service.create(command); + AdministratorCreateResult createResult = service.create( + AdministratorCreateCommand.builder() + .loginId("test") + .password("test") + .email("test") + .name("test") + .build() + ); // then assertThat(createResult.getId()).isNotNull(); @@ -55,30 +55,22 @@ public class AdministratorServiceTest extends MariaDBTestEnv { @Test public void updateAdministratorTest() { // given - AdministratorCreateCommand command = AdministratorCreateCommand.builder() - .loginId("test") - .password("test") - .email("test") - .name("test") - .build(); - - // when - AdministratorCreateResult createResult = service.create(command); + Administrator saveAdministrator = createAdministrator(); flushAndClear(); - AdministratorUpdateCommand updateCommand = AdministratorUpdateCommand.builder() - .id(createResult.getId()) - .password("test2") - .email("test2") - .name("test2") - .build(); - // when - service.update(updateCommand); + service.update( + AdministratorUpdateCommand.builder() + .id(saveAdministrator.getId()) + .password("test2") + .email("test2") + .name("test2") + .build() + ); flushAndClear(); // then - Administrator findAdministrator = repository.findById(createResult.getId()).orElseThrow(); + Administrator findAdministrator = repository.findById(saveAdministrator.getId()).orElseThrow(); assertThat(findAdministrator.getPassword()).isEqualTo("test2"); assertThat(findAdministrator.getEmail()).isEqualTo("test2"); assertThat(findAdministrator.getName()).isEqualTo("test2"); @@ -88,22 +80,27 @@ public class AdministratorServiceTest extends MariaDBTestEnv { @Test public void deleteAdministratorTest() { // given - AdministratorCreateCommand command = AdministratorCreateCommand.builder() - .loginId("test") - .password("test") - .email("test") - .name("test") - .build(); - - AdministratorCreateResult createResult = service.create(command); + Administrator saveAdministrator = createAdministrator(); flushAndClear(); // when - service.delete(createResult.getId()); + service.delete(saveAdministrator.getId()); flushAndClear(); // then - assertThat(repository.findById(createResult.getId())).isEmpty(); + assertThat(repository.findById(saveAdministrator.getId())).isEmpty(); + } + + @NotNull + private Administrator createAdministrator() { + return repository.save( + Administrator.builder() + .loginId("test2") + .password("test2") + .email("test2") + .name("test2") + .build() + ); } @Test 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 10f90b6..70b0d4f 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 @@ -8,6 +8,7 @@ import com.bpgroup.poc.admin.env.MariaDBTestEnv; import com.bpgroup.poc.admin.web.main.admin.menu.service.*; import jakarta.validation.ConstraintViolationException; import org.assertj.core.api.Assertions; +import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -53,19 +54,18 @@ class MenuServiceTest extends MariaDBTestEnv { @DisplayName("MenuGroup 수정 테스트") void updateMenuGroupTest() { // given - MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); - menuService.createMenuGroup(groupCreateCommand); + createMenuGroup(); flushAndClear(); - MenuGroupUpdateCommand groupUpdateCommand = MenuGroupUpdateCommand.builder() - .id(menuGroupRepository.findAll().get(0).getId()) - .uri("uri2") - .name("name2") - .sortOrder(1) - .build(); - // when - menuService.updateMenuGroup(groupUpdateCommand); + menuService.updateMenuGroup( + MenuGroupUpdateCommand.builder() + .id(menuGroupRepository.findAll().get(0).getId()) + .uri("uri2") + .name("name2") + .sortOrder(1) + .build() + ); flushAndClear(); // then @@ -78,62 +78,44 @@ class MenuServiceTest extends MariaDBTestEnv { @DisplayName("MenuGroup 삭제 테스트") void deleteMenuGroupTest() { // given - MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); - menuService.createMenuGroup(groupCreateCommand); + MenuGroup saveMenuGroup = createMenuGroup(); flushAndClear(); // when - menuService.deleteMenuGroup(menuGroupRepository.findAll().get(0).getId()); + menuService.deleteMenuGroup(saveMenuGroup.getId()); flushAndClear(); // then - Assertions.assertThat(menuGroupRepository.findAll()).hasSize(0); + Assertions.assertThat(menuGroupRepository.findById(saveMenuGroup.getId())).isEmpty(); } - @Test - @DisplayName("MenuGroup 삭제 시 Menu 동시 삭제 테스트") - void deleteMenuGroupWithMenuTest() { - // given - MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); - menuService.createMenuGroup(groupCreateCommand); - flushAndClear(); - - MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() - .menuGroupId(menuGroupRepository.findAll().get(0).getId()) - .uri("uri") - .name("name") - .sortOrder(1) - .build(); - - menuService.createMenu(menuCreateCommand); - flushAndClear(); - - // when - menuService.deleteMenuGroup(menuGroupRepository.findAll().get(0).getId()); - flushAndClear(); - - // then - Assertions.assertThat(menuGroupRepository.findAll()).hasSize(0); - Assertions.assertThat(menuRepository.findAll()).hasSize(0); + @NotNull + private MenuGroup createMenuGroup() { + return menuGroupRepository.save( + MenuGroup.builder() + .uri("uri") + .name("name") + .sortOrder(1) + .build() + ); } @Test @DisplayName("Menu 생성 테스트") void createGroupTest() { // given - MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); - menuService.createMenuGroup(groupCreateCommand); + MenuGroup saveMenuGroup = createMenuGroup(); flushAndClear(); - MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() - .menuGroupId(menuGroupRepository.findAll().get(0).getId()) - .uri("uri") - .name("name") - .sortOrder(1) - .build(); - // when - menuService.createMenu(menuCreateCommand); + menuService.createMenu( + MenuCreateCommand.builder() + .menuGroupId(saveMenuGroup.getId()) + .uri("uri") + .name("name") + .sortOrder(1) + .build() + ); flushAndClear(); // then @@ -144,33 +126,32 @@ class MenuServiceTest extends MariaDBTestEnv { @DisplayName("Menu 수정 테스트") void updateMenuTest() { // given - MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); - menuService.createMenuGroup(groupCreateCommand); + MenuGroup saveMenuGroup = createMenuGroup(); flushAndClear(); - MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() - .menuGroupId(menuGroupRepository.findAll().get(0).getId()) + Menu menu = Menu.builder() .uri("uri") .name("name") .sortOrder(1) .build(); + menu.setMenuGroup(saveMenuGroup); - menuService.createMenu(menuCreateCommand); + Menu saveMenu = menuRepository.save(menu); flushAndClear(); - MenuUpdateCommand menuUpdateCommand = MenuUpdateCommand.builder() - .id(menuRepository.findAll().get(0).getId()) - .uri("uri2") - .name("name2") - .sortOrder(1) - .build(); - // when - menuService.updateMenu(menuUpdateCommand); + menuService.updateMenu( + MenuUpdateCommand.builder() + .id(saveMenu.getId()) + .uri("uri2") + .name("name2") + .sortOrder(1) + .build() + ); flushAndClear(); // then - Menu findMenu = menuRepository.findAll().get(0); + Menu findMenu = menuRepository.findById(saveMenu.getId()).orElseThrow(); Assertions.assertThat(findMenu.getUri()).isEqualTo("uri2"); Assertions.assertThat(findMenu.getName()).isEqualTo("name2"); } @@ -179,25 +160,50 @@ class MenuServiceTest extends MariaDBTestEnv { @DisplayName("Menu 삭제 테스트") void deleteMenuTest() { // given - MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); - menuService.createMenuGroup(groupCreateCommand); + MenuGroup saveMenuGroup = createMenuGroup(); flushAndClear(); - MenuCreateCommand menuCreateCommand = MenuCreateCommand.builder() - .menuGroupId(menuGroupRepository.findAll().get(0).getId()) + Menu menu = Menu.builder() .uri("uri") .name("name") .sortOrder(1) .build(); + menu.setMenuGroup(saveMenuGroup); - menuService.createMenu(menuCreateCommand); + Menu saveMenu = menuRepository.save(menu); flushAndClear(); // when - menuService.deleteMenu(menuRepository.findAll().get(0).getId()); + menuService.deleteMenu(saveMenu.getId()); flushAndClear(); // then + Assertions.assertThat(menuRepository.findById(saveMenu.getId())).isEmpty(); + } + + @Test + @DisplayName("MenuGroup 삭제 시 Menu 동시 삭제 테스트") + void deleteMenuGroupWithMenuTest() { + // given + MenuGroup saveMenuGroup = createMenuGroup(); + flushAndClear(); + + menuService.createMenu( + MenuCreateCommand.builder() + .menuGroupId(saveMenuGroup.getId()) + .uri("uri") + .name("name") + .sortOrder(1) + .build() + ); + flushAndClear(); + + // when + menuService.deleteMenuGroup(menuGroupRepository.findAll().get(0).getId()); + flushAndClear(); + + // then + Assertions.assertThat(menuGroupRepository.findAll()).hasSize(0); Assertions.assertThat(menuRepository.findAll()).hasSize(0); } 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 92ec302..02d224b 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 @@ -51,14 +51,13 @@ class RoleServiceTest extends MariaDBTestEnv { @Test @DisplayName("Role 생성 테스트") void createRoleTest() { - // given - RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder() - .name("TEST") - .description("TEST") - .build(); - // when - RoleCreateResult createResult = roleService.create(roleCreateCommand); + RoleCreateResult createResult = roleService.create( + RoleCreateCommand.builder() + .name("TEST") + .description("TEST") + .build() + ); // then assertThat(createResult.getId()).isNotNull(); @@ -68,20 +67,21 @@ class RoleServiceTest extends MariaDBTestEnv { @DisplayName("Role 수정 테스트") void updateRoleTest() { // given - Long roleId = createRole(); - - RoleUpdateCommand roleUpdateCommand = RoleUpdateCommand.builder() - .id(roleId) - .name("TEST2") - .description("TEST2") - .build(); + Role saveRole = createRole(); + flushAndClear(); // when - roleService.update(roleUpdateCommand); + roleService.update( + RoleUpdateCommand.builder() + .id(saveRole.getId()) + .name("TEST2") + .description("TEST2") + .build() + ); flushAndClear(); // then - Role role = roleRepository.findById(roleId).orElseThrow(); + Role role = roleRepository.findById(saveRole.getId()).orElseThrow(); assertThat(role.getName()).isEqualTo("TEST2"); assertThat(role.getDescription()).isEqualTo("TEST2"); } @@ -90,66 +90,67 @@ class RoleServiceTest extends MariaDBTestEnv { @DisplayName("Role 삭제 테스트") void deleteRoleTest() { // given - Long roleId = createRole(); + Role saveRole = createRole(); + flushAndClear(); // when - roleService.delete(roleId); + roleService.delete(saveRole.getId()); flushAndClear(); // then - assertThat(roleRepository.findById(roleId)).isEmpty(); + assertThat(roleRepository.findById(saveRole.getId())).isEmpty(); } @Test @DisplayName("Role Menu 추가 테스트") void addMenuTest() { // given - Long roleId = createRole(); - MenuGroup menuGroup = createMenus(); + Role saveRole = createRole(); + flushAndClear(); + + MenuGroup menuGroup = createMenuGroup(); + flushAndClear(); + Menu menu1 = createMenu(menuGroup); Menu menu2 = createMenu(menuGroup); - - Set roleAddMenuCommands = Set.of( - RoleAddMenuCommand.builder() - .roleId(roleId) - .menuId(menu1.getId()) - .build(), - RoleAddMenuCommand.builder() - .roleId(roleId) - .menuId(menu2.getId()) - .build() - ); + flushAndClear(); // when - roleService.addMenu(roleAddMenuCommands); + roleService.addMenu( + Set.of( + RoleAddMenuCommand.builder() + .roleId(saveRole.getId()) + .menuId(menu1.getId()) + .build(), + RoleAddMenuCommand.builder() + .roleId(saveRole.getId()) + .menuId(menu2.getId()) + .build() + ) + ); flushAndClear(); // then - assertThat(roleMenuRepository.findAll()).hasSize(2); + assertThat(roleMenuRepository.findById(saveRole.getId())).isNotEmpty(); } - private Long createRole() { - Role role = roleRepository.save( + private Role createRole() { + return roleRepository.save( Role.builder() .name("TEST") .description("TEST") .build() ); - flushAndClear(); - return role.getId(); } - private MenuGroup createMenus() { - MenuGroup menuGroup = menuGroupRepository.save( + private MenuGroup createMenuGroup() { + return menuGroupRepository.save( MenuGroup.builder() .uri("TEST") .name("TEST") .sortOrder(1) .build() ); - - flushAndClear(); - return menuGroup; } private Menu createMenu(MenuGroup menuGroup) { @@ -159,10 +160,7 @@ class RoleServiceTest extends MariaDBTestEnv { .sortOrder(1) .build(); menu.setMenuGroup(menuGroup); - Menu saveMenu = menuRepository.save(menu); - - flushAndClear(); - return saveMenu; + return menuRepository.save(menu); } @Test From 8b3a827ba0ce022cd4b7d4a3592579f652bced66 Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 14:21:39 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=EA=B6=8C=ED=95=9C=20=EB=A9=94=EB=89=B4=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EB=B0=8F=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=20=EC=82=AD=EC=A0=9C=20=EC=8B=9C=20=EA=B6=8C=ED=95=9C?= =?UTF-8?q?=20=EB=A9=94=EB=89=B4=20=EB=8F=99=EC=8B=9C=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poc/admin/domain/entity/role/Role.java | 6 +- .../admin/domain/entity/role/RoleMenu.java | 4 +- .../AdministratorManagementService.java | 5 ++ .../main/admin/role/RoleRestController.java | 7 +- .../main/admin/role/service/RoleService.java | 15 +++- .../web/main/admin/role/RoleServiceTest.java | 87 +++++++++++++++++-- 6 files changed, 112 insertions(+), 12 deletions(-) diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java index 816cf87..a119c65 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java @@ -23,7 +23,7 @@ public class Role extends BaseEntity { @Column(name = "description") private String description; - @OneToMany(mappedBy = "role", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "role", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) private Set roleMenus = new HashSet<>(); @Builder @@ -43,4 +43,8 @@ public class Role extends BaseEntity { public void addRoleMenu(RoleMenu roleMenu) { this.roleMenus.add(roleMenu); } + + public void deleteRoleMenus() { + this.roleMenus.clear(); + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java index 68353b0..bf35614 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java @@ -15,11 +15,11 @@ public class RoleMenu extends BaseEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Role role; - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "menu_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Menu menu; 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 index e3b8f89..885e2cc 100644 --- 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 @@ -42,6 +42,11 @@ public class AdministratorManagementService { } public void delete(@NotNull Long id) { + Optional findAdministrator = repository.findById(id); + if (findAdministrator.isEmpty()) { + throw new IllegalArgumentException("Not found administrator"); + } + repository.deleteById(id); } } 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 ec27fbe..1f6aded 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 @@ -77,12 +77,15 @@ public class RoleRestController { /** * 권한 내 메뉴 추가 + * DELETE -> INSERT */ - @PostMapping("/add/menu") + @PostMapping("/put/menu") public ResponseEntity addMenu( @RequestBody @Valid List request, BindingResult bindingResult ) { + roleService.deleteRoleMenu(request.get(0).getRoleId()); + Set commands = request.stream() .map(c -> RoleAddMenuCommand.builder() .roleId(c.getRoleId()) @@ -91,7 +94,7 @@ public class RoleRestController { ) .collect(Collectors.toSet()); - roleService.addMenu(commands); + roleService.addRoleMenu(commands); return ResponseEntity.ok(RoleAddMenu.Response.success()); } 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 index 538d411..4804741 100644 --- 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 @@ -60,10 +60,11 @@ public class RoleService { throw new IllegalArgumentException("Role Not Found"); } - roleRepository.deleteById(id); + Role role = findRole.get(); + roleRepository.deleteById(role.getId()); } - public void addMenu( + public void addRoleMenu( @NotNull @Valid Set commands ) { RoleAddMenuCommand command = commands.stream().findFirst().orElseThrow(); @@ -87,4 +88,14 @@ public class RoleService { }); } + + public void deleteRoleMenu(@NotNull Long roleId) { + Optional findRole = roleRepository.findById(roleId); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Role Not Found"); + } + + Role role = findRole.get(); + role.deleteRoleMenus(); + } } 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 02d224b..883d9ed 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 @@ -5,6 +5,7 @@ import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository; import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; import com.bpgroup.poc.admin.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.entity.role.RoleMenu; import com.bpgroup.poc.admin.domain.entity.role.RoleMenuRepository; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; @@ -116,7 +117,7 @@ class RoleServiceTest extends MariaDBTestEnv { flushAndClear(); // when - roleService.addMenu( + roleService.addRoleMenu( Set.of( RoleAddMenuCommand.builder() .roleId(saveRole.getId()) @@ -134,6 +135,79 @@ class RoleServiceTest extends MariaDBTestEnv { assertThat(roleMenuRepository.findById(saveRole.getId())).isNotEmpty(); } + @Test + @DisplayName("Role Menu 삭제 테스트") + void deleteRoleMenuTest() { + // given + Role saveRole = createRole(); + flushAndClear(); + + MenuGroup menuGroup = createMenuGroup(); + flushAndClear(); + + Menu saveMenu1 = createMenu(menuGroup); + Menu saveMenu2 = createMenu(menuGroup); + flushAndClear(); + + roleMenuRepository.save( + RoleMenu.builder() + .role(saveRole) + .menu(saveMenu1) + .build() + ); + + roleMenuRepository.save( + RoleMenu.builder() + .role(saveRole) + .menu(saveMenu2) + .build() + ); + flushAndClear(); + + // when + roleService.deleteRoleMenu(saveRole.getId()); + flushAndClear(); + + // then + assertThat(roleMenuRepository.findAll()).isEmpty(); + } + + @Test + @DisplayName("Role 삭제 시 Role Menu 동시 삭제 테스트") + void deleteRoleAndRoleMenuTest() { + // given + Role saveRole = createRole(); + flushAndClear(); + + MenuGroup menuGroup = createMenuGroup(); + flushAndClear(); + + Menu saveMenu1 = createMenu(menuGroup); + Menu saveMenu2 = createMenu(menuGroup); + flushAndClear(); + + roleMenuRepository.save( + RoleMenu.builder() + .role(saveRole) + .menu(saveMenu1) + .build() + ); + + roleMenuRepository.save( + RoleMenu.builder() + .role(saveRole) + .menu(saveMenu2) + .build() + ); + + // when + roleService.delete(saveRole.getId()); + flushAndClear(); + + // then + assertThat(roleMenuRepository.findAll()).isEmpty(); + } + private Role createRole() { return roleRepository.save( Role.builder() @@ -144,7 +218,7 @@ class RoleServiceTest extends MariaDBTestEnv { } private MenuGroup createMenuGroup() { - return menuGroupRepository.save( + return menuGroupRepository.save( MenuGroup.builder() .uri("TEST") .name("TEST") @@ -160,7 +234,7 @@ class RoleServiceTest extends MariaDBTestEnv { .sortOrder(1) .build(); menu.setMenuGroup(menuGroup); - return menuRepository.save(menu); + return menuRepository.save(menu); } @Test @@ -179,8 +253,11 @@ class RoleServiceTest extends MariaDBTestEnv { assertThatThrownBy(() -> roleService.delete(null)).isInstanceOf(ConstraintViolationException.class); // add Role Menu - assertThatThrownBy(() -> roleService.addMenu(Set.of(RoleAddMenuCommand.builder().roleId(null).menuId(null).build()))).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> roleService.addMenu(Set.of(RoleAddMenuCommand.builder().roleId(1L).menuId(null).build()))).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> roleService.addRoleMenu(Set.of(RoleAddMenuCommand.builder().roleId(null).menuId(null).build()))).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> roleService.addRoleMenu(Set.of(RoleAddMenuCommand.builder().roleId(1L).menuId(null).build()))).isInstanceOf(ConstraintViolationException.class); + + // delete Role Menu + assertThatThrownBy(() -> roleService.deleteRoleMenu(null)).isInstanceOf(ConstraintViolationException.class); } From 7faf94a8c95b47987738294aa4b3b019684e8c06 Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 15:55:36 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=20=EB=8F=99=EC=8B=9C=20=EC=B6=94=EA=B0=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/administrator/Administrator.java | 6 +- .../administrator/AdministratorRole.java | 16 +- .../AdministratorRoleRepository.java | 6 + .../poc/admin/domain/entity/role/Role.java | 4 - ...AdministratorManagementRestController.java | 3 +- .../reqres/AdministratorCreate.java | 5 +- .../reqres/AdministratorUpdate.java | 5 +- .../service/AdministratorCreateCommand.java | 10 +- .../AdministratorManagementService.java | 36 ++++- .../service/AdministratorUpdateCommand.java | 9 +- .../main/admin/role/service/RoleService.java | 2 - .../AdministratorServiceTest.java | 150 ++++++++++++++---- .../web/main/admin/role/RoleServiceTest.java | 2 +- 13 files changed, 189 insertions(+), 65 deletions(-) create mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java index 832a684..bbd7b78 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java @@ -1,6 +1,7 @@ package com.bpgroup.poc.admin.domain.entity.administrator; import com.bpgroup.poc.admin.domain.entity.BaseEntity; +import com.bpgroup.poc.admin.domain.entity.role.Role; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @@ -26,7 +27,7 @@ public class Administrator extends BaseEntity { @Column(name = "name", length = 100, nullable = false) private String name; - @OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY) + @OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY, orphanRemoval = true) private AdministratorRole administratorRole; @Builder @@ -45,4 +46,7 @@ public class Administrator extends BaseEntity { this.name = administrator.name; } + public void setAdministratorRole(Role role) { + this.administratorRole = AdministratorRole.of(this, role); + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java index 56392dc..6b71d86 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java @@ -3,6 +3,7 @@ package com.bpgroup.poc.admin.domain.entity.administrator; import com.bpgroup.poc.admin.domain.entity.BaseEntity; import com.bpgroup.poc.admin.domain.entity.role.Role; import jakarta.persistence.*; +import lombok.Builder; import lombok.Getter; @Getter @@ -14,12 +15,23 @@ public class AdministratorRole extends BaseEntity { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "administrator_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Administrator administrator; - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Role role; + @Builder + public static AdministratorRole of(Administrator administrator, Role role) { + AdministratorRole administratorRole = new AdministratorRole(); + administratorRole.administrator = administrator; + administratorRole.role = role; + return administratorRole; + } + + public void update(Role findRole) { + this.role = findRole; + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java new file mode 100644 index 0000000..c2f890b --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java @@ -0,0 +1,6 @@ +package com.bpgroup.poc.admin.domain.entity.administrator; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface AdministratorRoleRepository extends JpaRepository { +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java index a119c65..167cf42 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java @@ -40,10 +40,6 @@ public class Role extends BaseEntity { this.description = updateRole.description; } - public void addRoleMenu(RoleMenu roleMenu) { - this.roleMenus.add(roleMenu); - } - public void deleteRoleMenus() { this.roleMenus.clear(); } 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 464746e..cef249f 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 @@ -84,6 +84,7 @@ public class AdministratorManagementRestController { .password(passwordEncoder.encode(request.getPassword())) .name(request.getName()) .email(request.getEmail()) + .roleId(request.getRoleId()) .build() ); @@ -93,7 +94,7 @@ public class AdministratorManagementRestController { /** * 관리자 삭제 * - * @param request 요청 + * @param request 요청 * @param bindingResult Validation 결과 * @return 응답 */ diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorCreate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorCreate.java index 11c455d..1fc94de 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorCreate.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorCreate.java @@ -13,15 +13,14 @@ public class AdministratorCreate { public static class Request { @NotBlank private String loginId; - @NotBlank private String password; - @NotBlank private String email; - @NotBlank private String name; + @NotBlank + private String roleId; } @Getter 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 acbb7ec..ec471f3 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 @@ -14,15 +14,14 @@ public class AdministratorUpdate { public static class Request { @NotNull private Long id; - @NotBlank private String password; - @NotBlank private String email; - @NotBlank private String name; + @NotNull + private Long roleId; } @Getter diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java index 4afd243..656f2dc 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java @@ -2,6 +2,7 @@ package com.bpgroup.poc.admin.web.main.admin.management.service; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Builder; import lombok.Getter; import lombok.ToString; @@ -9,26 +10,25 @@ import lombok.ToString; @Getter @ToString public class AdministratorCreateCommand { - @NotBlank private String loginId; - @NotBlank private String password; - @NotBlank private String email; - @NotBlank private String name; + @NotNull + private Long roleId; @Builder - public static AdministratorCreateCommand of(String loginId, String password, String email, String name) { + public static AdministratorCreateCommand of(String loginId, String password, String email, String name, Long roleId) { AdministratorCreateCommand command = new AdministratorCreateCommand(); command.loginId = loginId; command.password = password; command.email = email; command.name = name; + command.roleId = roleId; return command; } 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 index 885e2cc..64beb79 100644 --- 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 @@ -2,6 +2,10 @@ package com.bpgroup.poc.admin.web.main.admin.management.service; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; +import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; +import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository; +import com.bpgroup.poc.admin.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; @@ -17,12 +21,26 @@ import java.util.Optional; @Transactional public class AdministratorManagementService { - private final AdministratorRepository repository; + private final AdministratorRepository administratorRepository; + private final AdministratorRoleRepository administratorRoleRepository; + private final RoleRepository roleRepository; public AdministratorCreateResult create( @NotNull @Valid AdministratorCreateCommand command ) { - Administrator admin = repository.save(command.toEntity()); + Optional findRole = roleRepository.findById(command.getRoleId()); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Not found role"); + } + + Administrator admin = administratorRepository.save(command.toEntity()); + + AdministratorRole administratorRole = AdministratorRole.builder() + .administrator(admin) + .role(findRole.get()) + .build(); + + administratorRoleRepository.save(administratorRole); return AdministratorCreateResult.builder() .id(admin.getId()) @@ -32,21 +50,29 @@ public class AdministratorManagementService { public void update( @NotNull @Valid AdministratorUpdateCommand command ) { - Optional findAdministrator = repository.findById(command.getId()); + Optional findAdministrator = administratorRepository.findById(command.getId()); if (findAdministrator.isEmpty()) { throw new IllegalArgumentException("Not found administrator"); } Administrator administrator = findAdministrator.get(); administrator.update(command.toEntity()); + + Optional findRole = roleRepository.findById(command.getRoleId()); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Not found role"); + } + + Role role = findRole.get(); + administrator.getAdministratorRole().update(role); } public void delete(@NotNull Long id) { - Optional findAdministrator = repository.findById(id); + Optional findAdministrator = administratorRepository.findById(id); if (findAdministrator.isEmpty()) { throw new IllegalArgumentException("Not found administrator"); } - repository.deleteById(id); + administratorRepository.deleteById(id); } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java index 1c6d59e..1474acc 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java @@ -10,26 +10,25 @@ import lombok.ToString; @Getter @ToString public class AdministratorUpdateCommand { - @NotNull private Long id; - @NotBlank private String password; - @NotBlank private String email; - @NotBlank private String name; + @NotNull + private Long roleId; @Builder - public static AdministratorUpdateCommand of(Long id, String password, String email, String name) { + public static AdministratorUpdateCommand of(Long id, String password, String email, String name, Long roleId) { AdministratorUpdateCommand command = new AdministratorUpdateCommand(); command.id = id; command.password = password; command.email = email; command.name = name; + command.roleId = roleId; return command; } 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 index 4804741..6eaf823 100644 --- 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 @@ -82,8 +82,6 @@ public class RoleService { Menu menu = findMenu.get(); RoleMenu roleMenu = RoleMenu.of(role, menu); - role.addRoleMenu(roleMenu); - roleMenuRepository.save(roleMenu); }); 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 e389e61..14f0bb5 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 @@ -2,6 +2,10 @@ package com.bpgroup.poc.admin.web.main.admin.administrator; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; +import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; +import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository; +import com.bpgroup.poc.admin.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateCommand; import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateResult; @@ -20,23 +24,38 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Transactional @DisplayName("AdministratorService 테스트") -public class AdministratorServiceTest extends MariaDBTestEnv { + class AdministratorServiceTest extends MariaDBTestEnv { @Autowired private AdministratorManagementService service; @Autowired - private AdministratorRepository repository; + private AdministratorRepository administratorRepository; + + @Autowired + private AdministratorRoleRepository administratorRoleRepository; + + @Autowired + private RoleRepository roleRepository; @BeforeEach void setUp() { - repository.deleteAll(); + administratorRepository.deleteAll(); + administratorRoleRepository.deleteAll(); + roleRepository.deleteAll(); } - @DisplayName("Administrator 등록 테스트") @Test - public void createAdministratorTest() { + void createAdministratorTest() { + Role role = roleRepository.save( + Role.builder() + .name("test") + .description("test") + .build() + ); + flushAndClear(); + // when AdministratorCreateResult createResult = service.create( AdministratorCreateCommand.builder() @@ -44,20 +63,49 @@ public class AdministratorServiceTest extends MariaDBTestEnv { .password("test") .email("test") .name("test") + .roleId(role.getId()) .build() ); + flushAndClear(); // then assertThat(createResult.getId()).isNotNull(); + + Administrator findAdministrator = administratorRepository.findById(createResult.getId()).orElseThrow(); + assertThat(findAdministrator.getAdministratorRole().getRole().getName()).isEqualTo("test"); } @DisplayName("Administrator 수정 테스트") @Test - public void updateAdministratorTest() { + void updateAdministratorTest() { // given Administrator saveAdministrator = createAdministrator(); flushAndClear(); + Role saveRole = roleRepository.save( + Role.builder() + .name("test") + .description("test") + .build() + ); + flushAndClear(); + + Role updateRole = roleRepository.save( + Role.builder() + .name("test2") + .description("test2") + .build() + ); + flushAndClear(); + + administratorRoleRepository.save( + AdministratorRole.builder() + .administrator(saveAdministrator) + .role(saveRole) + .build() + ); + flushAndClear(); + // when service.update( AdministratorUpdateCommand.builder() @@ -65,20 +113,23 @@ public class AdministratorServiceTest extends MariaDBTestEnv { .password("test2") .email("test2") .name("test2") + .roleId(updateRole.getId()) .build() ); flushAndClear(); // then - Administrator findAdministrator = repository.findById(saveAdministrator.getId()).orElseThrow(); + Administrator findAdministrator = administratorRepository.findById(saveAdministrator.getId()).orElseThrow(); assertThat(findAdministrator.getPassword()).isEqualTo("test2"); assertThat(findAdministrator.getEmail()).isEqualTo("test2"); assertThat(findAdministrator.getName()).isEqualTo("test2"); + + assertThat(findAdministrator.getAdministratorRole().getRole().getName()).isEqualTo("test2"); } @DisplayName("Administrator 삭제 테스트") @Test - public void deleteAdministratorTest() { + void deleteAdministratorTest() { // given Administrator saveAdministrator = createAdministrator(); flushAndClear(); @@ -88,42 +139,75 @@ public class AdministratorServiceTest extends MariaDBTestEnv { flushAndClear(); // then - assertThat(repository.findById(saveAdministrator.getId())).isEmpty(); + assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty(); + } + + @DisplayName("Administrator 삭제 시 Administrator 동시 삭제 테스트") + @Test + void deleteAdministratorAndAdministratorRoleTest() { + // given + Administrator saveAdministrator = createAdministrator(); + flushAndClear(); + + Role saveRole = roleRepository.save( + Role.builder() + .name("test") + .description("test") + .build() + ); + flushAndClear(); + + administratorRoleRepository.save( + AdministratorRole.builder() + .administrator(saveAdministrator) + .role(saveRole) + .build() + ); + flushAndClear(); + + // when + service.delete(saveAdministrator.getId()); + flushAndClear(); + + // then + assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty(); + assertThat(administratorRoleRepository.findAll()).isEmpty(); } @NotNull private Administrator createAdministrator() { - return repository.save( - Administrator.builder() - .loginId("test2") - .password("test2") - .email("test2") - .name("test2") - .build() - ); + Administrator administrator = Administrator.builder() + .loginId("test2") + .password("test2") + .email("test2") + .name("test2") + .build(); + return administratorRepository.save(administrator); } @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); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("").password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("name").roleId(null).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); + // update + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("name").roleId(null).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/role/RoleServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java index 883d9ed..a29293d 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 @@ -132,7 +132,7 @@ class RoleServiceTest extends MariaDBTestEnv { flushAndClear(); // then - assertThat(roleMenuRepository.findById(saveRole.getId())).isNotEmpty(); + assertThat(roleMenuRepository.findAll()).size().isEqualTo(2); } @Test From bcbb62b5137b0f36968dd2454c6fbdd3eec55ba8 Mon Sep 17 00:00:00 2001 From: geonhos Date: Thu, 16 May 2024 16:35:15 +0900 Subject: [PATCH 8/8] =?UTF-8?q?admin:=20administrator=20=EB=82=B4=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EA=B6=8C=ED=95=9C=20=EC=9E=84?= =?UTF-8?q?=EB=B2=A0=EB=94=94=EB=93=9C=20=ED=83=80=EC=9E=85=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/administrator/Administrator.java | 8 +-- .../administrator/AdministratorRole.java | 21 +----- .../AdministratorRoleRepository.java | 6 -- .../web/advice/menu/MenuQueryRepository.java | 1 - .../AdministratorManagementService.java | 31 ++++---- .../AdministratorServiceTest.java | 70 +++++++------------ 6 files changed, 49 insertions(+), 88 deletions(-) delete mode 100644 poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java index bbd7b78..a123c45 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java @@ -1,7 +1,6 @@ package com.bpgroup.poc.admin.domain.entity.administrator; import com.bpgroup.poc.admin.domain.entity.BaseEntity; -import com.bpgroup.poc.admin.domain.entity.role.Role; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @@ -27,7 +26,7 @@ public class Administrator extends BaseEntity { @Column(name = "name", length = 100, nullable = false) private String name; - @OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY, orphanRemoval = true) + @Embedded private AdministratorRole administratorRole; @Builder @@ -44,9 +43,10 @@ public class Administrator extends BaseEntity { this.password = administrator.password; this.email = administrator.email; this.name = administrator.name; + this.administratorRole = administrator.administratorRole; } - public void setAdministratorRole(Role role) { - this.administratorRole = AdministratorRole.of(this, role); + public void setAdministratorRole(AdministratorRole administratorRole) { + this.administratorRole = administratorRole; } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java index 6b71d86..6651665 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java @@ -1,37 +1,22 @@ package com.bpgroup.poc.admin.domain.entity.administrator; -import com.bpgroup.poc.admin.domain.entity.BaseEntity; import com.bpgroup.poc.admin.domain.entity.role.Role; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; @Getter -@Entity -@Table(name = "administrator_role") -public class AdministratorRole extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "administrator_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) - private Administrator administrator; +@Embeddable +public class AdministratorRole { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Role role; @Builder - public static AdministratorRole of(Administrator administrator, Role role) { + public static AdministratorRole of(Role role) { AdministratorRole administratorRole = new AdministratorRole(); - administratorRole.administrator = administrator; administratorRole.role = role; return administratorRole; } - - public void update(Role findRole) { - this.role = findRole; - } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java deleted file mode 100644 index c2f890b..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRoleRepository.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.bpgroup.poc.admin.domain.entity.administrator; - -import org.springframework.data.jpa.repository.JpaRepository; - -public interface AdministratorRoleRepository extends JpaRepository { -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java index 55f5b6d..d2758c2 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java @@ -30,7 +30,6 @@ public class MenuQueryRepository { roleMenu.menu.sortOrder ) .from(administrator) - .innerJoin(administrator.administratorRole, administratorRole) .innerJoin(administratorRole.role, role) .innerJoin(role.roleMenus, roleMenu) .innerJoin(roleMenu.menu, menu) 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 index 64beb79..a4b59ee 100644 --- 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 @@ -3,7 +3,6 @@ package com.bpgroup.poc.admin.web.main.admin.management.service; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository; import com.bpgroup.poc.admin.domain.entity.role.Role; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import jakarta.validation.Valid; @@ -22,7 +21,6 @@ import java.util.Optional; public class AdministratorManagementService { private final AdministratorRepository administratorRepository; - private final AdministratorRoleRepository administratorRoleRepository; private final RoleRepository roleRepository; public AdministratorCreateResult create( @@ -33,17 +31,17 @@ public class AdministratorManagementService { throw new IllegalArgumentException("Not found role"); } - Administrator admin = administratorRepository.save(command.toEntity()); - - AdministratorRole administratorRole = AdministratorRole.builder() - .administrator(admin) - .role(findRole.get()) - .build(); - - administratorRoleRepository.save(administratorRole); + Role role = findRole.get(); + Administrator administrator = command.toEntity(); + administrator.setAdministratorRole( + AdministratorRole.builder() + .role(role) + .build() + ); + Administrator savedAdministrator = administratorRepository.save(administrator); return AdministratorCreateResult.builder() - .id(admin.getId()) + .id(savedAdministrator.getId()) .build(); } @@ -55,16 +53,19 @@ public class AdministratorManagementService { throw new IllegalArgumentException("Not found administrator"); } - Administrator administrator = findAdministrator.get(); - administrator.update(command.toEntity()); - Optional findRole = roleRepository.findById(command.getRoleId()); if (findRole.isEmpty()) { throw new IllegalArgumentException("Not found role"); } Role role = findRole.get(); - administrator.getAdministratorRole().update(role); + Administrator administrator = findAdministrator.get(); + administrator.setAdministratorRole( + AdministratorRole.builder() + .role(role) + .build() + ); + administrator.update(administrator); } public void delete(@NotNull Long id) { 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 14f0bb5..d29d21b 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 @@ -3,7 +3,6 @@ package com.bpgroup.poc.admin.web.main.admin.administrator; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository; import com.bpgroup.poc.admin.domain.entity.role.Role; import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; @@ -32,9 +31,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Autowired private AdministratorRepository administratorRepository; - @Autowired - private AdministratorRoleRepository administratorRoleRepository; - @Autowired private RoleRepository roleRepository; @@ -42,18 +38,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @BeforeEach void setUp() { administratorRepository.deleteAll(); - administratorRoleRepository.deleteAll(); roleRepository.deleteAll(); } @Test void createAdministratorTest() { - Role role = roleRepository.save( - Role.builder() - .name("test") - .description("test") - .build() - ); + Role role = getSaveRole(); flushAndClear(); // when @@ -79,15 +69,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Test void updateAdministratorTest() { // given - Administrator saveAdministrator = createAdministrator(); + Role saveRole = getSaveRole(); flushAndClear(); - Role saveRole = roleRepository.save( - Role.builder() - .name("test") - .description("test") - .build() - ); + Administrator saveAdministrator = createAdministrator(saveRole); flushAndClear(); Role updateRole = roleRepository.save( @@ -98,14 +83,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; ); flushAndClear(); - administratorRoleRepository.save( - AdministratorRole.builder() - .administrator(saveAdministrator) - .role(saveRole) - .build() - ); - flushAndClear(); - // when service.update( AdministratorUpdateCommand.builder() @@ -131,7 +108,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Test void deleteAdministratorTest() { // given - Administrator saveAdministrator = createAdministrator(); + Role saveRole = getSaveRole(); + flushAndClear(); + + Administrator saveAdministrator = createAdministrator(saveRole); flushAndClear(); // when @@ -146,23 +126,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; @Test void deleteAdministratorAndAdministratorRoleTest() { // given - Administrator saveAdministrator = createAdministrator(); + Role saveRole = getSaveRole(); flushAndClear(); - Role saveRole = roleRepository.save( - Role.builder() - .name("test") - .description("test") - .build() - ); - flushAndClear(); - - administratorRoleRepository.save( - AdministratorRole.builder() - .administrator(saveAdministrator) - .role(saveRole) - .build() - ); + Administrator saveAdministrator = createAdministrator(saveRole); flushAndClear(); // when @@ -171,17 +138,32 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; // then assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty(); - assertThat(administratorRoleRepository.findAll()).isEmpty(); } @NotNull - private Administrator createAdministrator() { + private Role getSaveRole() { + return roleRepository.save( + Role.builder() + .name("test") + .description("test") + .build() + ); + } + + @NotNull + private Administrator createAdministrator(Role role) { Administrator administrator = Administrator.builder() .loginId("test2") .password("test2") .email("test2") .name("test2") .build(); + administrator.setAdministratorRole( + AdministratorRole.builder() + .role(role) + .build() + ); + return administratorRepository.save(administrator); }