메뉴/메뉴 그룹 생성, 수정, 삭제 기능 및 테스트 코드 추가
This commit is contained in:
parent
038fe3c264
commit
ff4bb3e41f
|
|
@ -2,6 +2,7 @@ package com.bpgroup.poc.admin.domain.admin.entity;
|
||||||
|
|
||||||
import com.bpgroup.poc.admin.domain.BaseEntity;
|
import com.bpgroup.poc.admin.domain.BaseEntity;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -22,8 +23,26 @@ public class Menu extends BaseEntity {
|
||||||
@Column(name = "sort_order", nullable = false)
|
@Column(name = "sort_order", nullable = false)
|
||||||
private Integer sortOrder;
|
private Integer sortOrder;
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "menu_group_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
|
@JoinColumn(name = "menu_group_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
|
||||||
private MenuGroup menuGroup;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,12 @@ package com.bpgroup.poc.admin.domain.admin.entity;
|
||||||
|
|
||||||
import com.bpgroup.poc.admin.domain.BaseEntity;
|
import com.bpgroup.poc.admin.domain.BaseEntity;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "menu_group")
|
@Table(name = "menu_group")
|
||||||
|
|
@ -22,4 +26,26 @@ public class MenuGroup extends BaseEntity {
|
||||||
@Column(name = "sort_order", nullable = false)
|
@Column(name = "sort_order", nullable = false)
|
||||||
private Integer sortOrder;
|
private Integer sortOrder;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "menuGroup", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
|
||||||
|
private List<Menu> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.bpgroup.poc.admin.domain.admin.entity;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface MenuGroupRepository extends JpaRepository<MenuGroup, Long> {
|
||||||
|
}
|
||||||
|
|
@ -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());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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<MenuGroup> 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<MenuGroup> findMenuGroup = menuGroupRepository.findById(id);
|
||||||
|
if (findMenuGroup.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("MenuGroup not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
menuGroupRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createMenu(
|
||||||
|
@NotNull @Valid MenuCreateCommand command
|
||||||
|
) {
|
||||||
|
Optional<MenuGroup> 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<Menu> 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<Menu> findMenu = menuRepository.findById(id);
|
||||||
|
if (findMenu.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Menu not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
menuRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue