admin: refactoring

This commit is contained in:
geonhos 2024-05-16 10:54:39 +09:00
parent ff4bb3e41f
commit 354cc7e497
23 changed files with 368 additions and 293 deletions

View File

@ -26,7 +26,7 @@ public class AdministratorManagementQueryRepository {
.fetch(); .fetch();
} }
public AdministratorFind.Response findByLoginId(String loginId) { public AdministratorFind.Response find(String loginId) {
return queryFactory.select(Projections.fields(AdministratorFind.Response.class, return queryFactory.select(Projections.fields(AdministratorFind.Response.class,
administrator.id, administrator.id,
administrator.loginId, administrator.loginId,

View File

@ -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.AdministratorDelete;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorFind; 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.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 jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -20,31 +24,36 @@ import java.util.List;
public class AdministratorManagementRestController { public class AdministratorManagementRestController {
private final PasswordEncoder passwordEncoder; private final PasswordEncoder passwordEncoder;
private final AdministratorManagementService administratorManagementService;
private final AdministratorManagementService service;
private final AdministratorManagementQueryRepository queryRepository;
/** /**
* 전체 조회 * 전체 조회
*
* @return 응답 * @return 응답
*/ */
@GetMapping("/list") @GetMapping("/list")
public ResponseEntity<?> getAdministrators() { public ResponseEntity<?> getAdministrators() {
List<AdministratorFind.Response> response = administratorManagementService.findAll(); List<AdministratorFind.Response> response = queryRepository.findAll();
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
} }
/** /**
* 조회 * 조회
*
* @param loginId 관리자 ID * @param loginId 관리자 ID
* @return 응답 * @return 응답
*/ */
@GetMapping("/{loginId}") @GetMapping("/{loginId}")
public ResponseEntity<?> getAdministrator(@PathVariable @NotBlank String loginId) { public ResponseEntity<?> getAdministrator(@PathVariable @NotBlank String loginId) {
AdministratorFind.Response response = administratorManagementService.find(loginId); AdministratorFind.Response response = queryRepository.find(loginId);
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
} }
/** /**
* 관리자 등록 * 관리자 등록
*
* @param request 요청 * @param request 요청
* @param bindingResult Validation 결과 * @param bindingResult Validation 결과
* @return 응답 * @return 응답
@ -54,9 +63,15 @@ public class AdministratorManagementRestController {
@RequestBody @Validated AdministratorCreate.Request request, @RequestBody @Validated AdministratorCreate.Request request,
BindingResult bindingResult BindingResult bindingResult
) { ) {
request.setPassword(passwordEncoder.encode(request.getPassword())); AdministratorCreateResult result = service.create(
AdministratorCreate.Response response = administratorManagementService.create(request); AdministratorCreateCommand.builder()
return ResponseEntity.ok(response); .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") @PostMapping("/update")
@ -64,13 +79,20 @@ public class AdministratorManagementRestController {
@RequestBody @Validated AdministratorUpdate.Request request, @RequestBody @Validated AdministratorUpdate.Request request,
BindingResult bindingResult BindingResult bindingResult
) { ) {
request.setPassword(passwordEncoder.encode(request.getPassword())); service.update(
AdministratorUpdate.Response response = administratorManagementService.update(request); AdministratorUpdateCommand.builder()
return ResponseEntity.ok(response); .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 결과 * @param bindingResult Validation 결과
* @return 응답 * @return 응답
@ -80,8 +102,8 @@ public class AdministratorManagementRestController {
@RequestBody @Validated AdministratorDelete.Request request, @RequestBody @Validated AdministratorDelete.Request request,
BindingResult bindingResult BindingResult bindingResult
) { ) {
AdministratorDelete.Response response = administratorManagementService.delete(request); service.delete(request.getId());
return ResponseEntity.ok(response); return ResponseEntity.ok(AdministratorDelete.Response.success());
} }
} }

View File

@ -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<AdministratorFind.Response> 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<Administrator> 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();
}
}

View File

@ -15,9 +15,6 @@ public class AdministratorUpdate {
@NotNull @NotNull
private Long id; private Long id;
@NotBlank
private String username;
@NotBlank @NotBlank
private String password; private String password;

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.Administrator;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -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;
}
}

View File

@ -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<Administrator> 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);
}
}

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.Administrator;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; import lombok.ToString;
@ -22,6 +23,7 @@ public class AdministratorUpdateCommand {
@NotBlank @NotBlank
private String name; private String name;
@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) {
AdministratorUpdateCommand command = new AdministratorUpdateCommand(); AdministratorUpdateCommand command = new AdministratorUpdateCommand();
command.id = id; command.id = id;

View File

@ -1,9 +1,6 @@
package com.bpgroup.poc.admin.web.main.admin.menu; 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.service.*;
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 com.bpgroup.poc.admin.web.main.admin.menu.reqres.*;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.Menu;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.MenuGroup;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.MenuGroup;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -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.Menu;
import com.bpgroup.poc.admin.domain.admin.entity.MenuGroup; 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.MenuGroupRepository;
import com.bpgroup.poc.admin.domain.admin.entity.MenuRepository; 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.service.MenuCreateCommand;
import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupCreateCommand; import com.bpgroup.poc.admin.web.main.admin.menu.service.MenuGroupCreateCommand;
import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuGroupUpdateCommand; import com.bpgroup.poc.admin.web.main.admin.menu.service.MenuGroupUpdateCommand;
import com.bpgroup.poc.admin.web.main.admin.menu.command.MenuUpdateCommand; import com.bpgroup.poc.admin.web.main.admin.menu.service.MenuUpdateCommand;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.Menu;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -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.RoleCreate;
import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete; 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.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 jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -20,7 +24,6 @@ public class RoleRestController {
private final RoleService roleService; private final RoleService roleService;
/** /**
* 권한 등록 * 권한 등록
*/ */
@ -29,8 +32,14 @@ public class RoleRestController {
@RequestBody @Valid RoleCreate.Request request, @RequestBody @Valid RoleCreate.Request request,
BindingResult bindingResult BindingResult bindingResult
) { ) {
RoleCreate.Response response = roleService.create(request); RoleCreateResult result = roleService.create(
return ResponseEntity.ok(response); 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, @RequestBody @Valid RoleUpdate.Request request,
BindingResult bindingResult BindingResult bindingResult
) { ) {
RoleUpdate.Response response = roleService.update(request); roleService.update(
return ResponseEntity.ok(response); 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, @RequestBody @Valid RoleDelete.Request request,
BindingResult bindingResult BindingResult bindingResult
) { ) {
RoleDelete.Response response = roleService.delete(request); roleService.delete(request.getId());
return ResponseEntity.ok(response); return ResponseEntity.ok(RoleDelete.Response.success());
} }
} }

View File

@ -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> 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");
}
}
}

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.Role;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -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;
}
}

View File

@ -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<Role> 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<Role> findRole = repository.findById(id);
if (findRole.isEmpty()) {
throw new IllegalArgumentException("Role Not Found");
}
repository.deleteById(id);
}
}

View File

@ -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 com.bpgroup.poc.admin.domain.admin.entity.Role;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; import lombok.ToString;
@ -10,14 +11,16 @@ import lombok.ToString;
@ToString @ToString
public class RoleUpdateCommand { public class RoleUpdateCommand {
@NotNull
private Long id;
@NotBlank @NotBlank
private String name; private String name;
private String description; private String description;
@Builder @Builder
public static RoleUpdateCommand of(String name, String description) { public static RoleUpdateCommand of(Long id, String name, String description) {
RoleUpdateCommand command = new RoleUpdateCommand(); RoleUpdateCommand command = new RoleUpdateCommand();
command.id = id;
command.name = name; command.name = name;
command.description = description; command.description = description;
return command; return command;

View File

@ -1,14 +1,13 @@
package com.bpgroup.poc.admin.web.main.admin.administrator; 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.Administrator;
import com.bpgroup.poc.admin.domain.admin.entity.AdministratorRepository; import com.bpgroup.poc.admin.domain.admin.entity.AdministratorRepository;
import com.bpgroup.poc.admin.env.MariaDBTestEnv; 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.service.AdministratorCreateCommand;
import com.bpgroup.poc.admin.web.main.admin.management.AdministratorManagementService; import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateResult;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorCreate; import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorManagementService;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorDelete; import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorUpdateCommand;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorUpdate; import jakarta.validation.ConstraintViolationException;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -16,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Transactional @Transactional
@DisplayName("AdministratorService 테스트") @DisplayName("AdministratorService 테스트")
@ -27,9 +27,6 @@ public class AdministratorServiceTest extends MariaDBTestEnv {
@Autowired @Autowired
private AdministratorRepository repository; private AdministratorRepository repository;
@Autowired
private AdministratorManagementQueryRepository queryRepository;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
@ -40,46 +37,48 @@ public class AdministratorServiceTest extends MariaDBTestEnv {
@Test @Test
public void createAdministratorTest() { public void createAdministratorTest() {
// given // given
AdministratorCreate.Request request = new AdministratorCreate.Request(); AdministratorCreateCommand command = AdministratorCreateCommand.builder()
request.setLoginId("test"); .loginId("test")
request.setPassword("test"); .password("test")
request.setEmail("test"); .email("test")
request.setName("test"); .name("test")
.build();
// when // when
AdministratorCreate.Response response = service.create(request); AdministratorCreateResult createResult = service.create(command);
// then // then
assertThat(response.getResultCode()).isEqualTo("0000"); assertThat(createResult.getId()).isNotNull();
} }
@DisplayName("Administrator 수정 테스트") @DisplayName("Administrator 수정 테스트")
@Test @Test
public void updateAdministratorTest() { public void updateAdministratorTest() {
// given // given
Administrator administrator = repository.save( AdministratorCreateCommand command = AdministratorCreateCommand.builder()
AdministratorCreateCommand.builder()
.loginId("test") .loginId("test")
.password("test") .password("test")
.email("test") .email("test")
.name("test") .name("test")
.build() .build();
.toEntity()
);
AdministratorUpdate.Request updateRequest = new AdministratorUpdate.Request();
updateRequest.setId(administrator.getId());
updateRequest.setPassword("test2");
updateRequest.setEmail("test2");
updateRequest.setName("test2");
// when // 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 // then
assertThat(updateResponse.getResultCode()).isEqualTo("0000"); Administrator findAdministrator = repository.findById(createResult.getId()).orElseThrow();
flushAndClear();
Administrator findAdministrator = repository.findById(administrator.getId()).orElseThrow();
assertThat(findAdministrator.getPassword()).isEqualTo("test2"); assertThat(findAdministrator.getPassword()).isEqualTo("test2");
assertThat(findAdministrator.getEmail()).isEqualTo("test2"); assertThat(findAdministrator.getEmail()).isEqualTo("test2");
assertThat(findAdministrator.getName()).isEqualTo("test2"); assertThat(findAdministrator.getName()).isEqualTo("test2");
@ -89,27 +88,48 @@ public class AdministratorServiceTest extends MariaDBTestEnv {
@Test @Test
public void deleteAdministratorTest() { public void deleteAdministratorTest() {
// given // given
Administrator administrator = repository.save( AdministratorCreateCommand command = AdministratorCreateCommand.builder()
AdministratorCreateCommand.builder()
.loginId("test") .loginId("test")
.password("test") .password("test")
.email("test") .email("test")
.name("test") .name("test")
.build() .build();
.toEntity()
);
AdministratorDelete.Request request = new AdministratorDelete.Request(); AdministratorCreateResult createResult = service.create(command);
request.setId(administrator.getId()); flushAndClear();
// when // when
AdministratorDelete.Response deleteResponse = service.delete(request); service.delete(createResult.getId());
flushAndClear();
// then // then
assertThat(deleteResponse.getResultCode()).isEqualTo("0000"); assertThat(repository.findById(createResult.getId())).isEmpty();
}
flushAndClear(); @Test
assertThat(repository.findById(administrator.getId())).isEmpty(); @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);
} }
} }

View File

@ -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.MenuGroupRepository;
import com.bpgroup.poc.admin.domain.admin.entity.MenuRepository; import com.bpgroup.poc.admin.domain.admin.entity.MenuRepository;
import com.bpgroup.poc.admin.env.MariaDBTestEnv; 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.service.*;
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 jakarta.validation.ConstraintViolationException;
import org.assertj.core.api.Assertions; import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
@ -20,7 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Transactional @Transactional
public class MenuServiceTest extends MariaDBTestEnv { @DisplayName("MenuService 테스트")
class MenuServiceTest extends MariaDBTestEnv {
@Autowired @Autowired
private MenuService menuService; private MenuService menuService;
@ -32,14 +30,14 @@ public class MenuServiceTest extends MariaDBTestEnv {
private MenuRepository menuRepository; private MenuRepository menuRepository;
@BeforeEach @BeforeEach
public void setUp() { void setUp() {
menuGroupRepository.deleteAll(); menuGroupRepository.deleteAll();
menuRepository.deleteAll(); menuRepository.deleteAll();
} }
@Test @Test
@DisplayName("MenuGroup 생성 테스트") @DisplayName("MenuGroup 생성 테스트")
public void createMenuGroupTest() { void createMenuGroupTest() {
// given // given
MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1);
@ -53,7 +51,7 @@ public class MenuServiceTest extends MariaDBTestEnv {
@Test @Test
@DisplayName("MenuGroup 수정 테스트") @DisplayName("MenuGroup 수정 테스트")
public void updateMenuGroupTest() { void updateMenuGroupTest() {
// given // given
MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1);
menuService.createMenuGroup(groupCreateCommand); menuService.createMenuGroup(groupCreateCommand);
@ -78,7 +76,7 @@ public class MenuServiceTest extends MariaDBTestEnv {
@Test @Test
@DisplayName("MenuGroup 삭제 테스트") @DisplayName("MenuGroup 삭제 테스트")
public void deleteMenuGroupTest() { void deleteMenuGroupTest() {
// given // given
MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1);
menuService.createMenuGroup(groupCreateCommand); menuService.createMenuGroup(groupCreateCommand);
@ -94,7 +92,7 @@ public class MenuServiceTest extends MariaDBTestEnv {
@Test @Test
@DisplayName("MenuGroup 삭제 시 Menu 동시 삭제 테스트") @DisplayName("MenuGroup 삭제 시 Menu 동시 삭제 테스트")
public void deleteMenuGroupWithMenuTest() { void deleteMenuGroupWithMenuTest() {
// given // given
MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1);
menuService.createMenuGroup(groupCreateCommand); menuService.createMenuGroup(groupCreateCommand);
@ -121,7 +119,7 @@ public class MenuServiceTest extends MariaDBTestEnv {
@Test @Test
@DisplayName("Menu 생성 테스트") @DisplayName("Menu 생성 테스트")
public void createGroupTest() { void createGroupTest() {
// given // given
MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1);
menuService.createMenuGroup(groupCreateCommand); menuService.createMenuGroup(groupCreateCommand);
@ -144,7 +142,7 @@ public class MenuServiceTest extends MariaDBTestEnv {
@Test @Test
@DisplayName("Menu 수정 테스트") @DisplayName("Menu 수정 테스트")
public void updateMenuTest() { void updateMenuTest() {
// given // given
MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1);
menuService.createMenuGroup(groupCreateCommand); menuService.createMenuGroup(groupCreateCommand);
@ -179,7 +177,7 @@ public class MenuServiceTest extends MariaDBTestEnv {
@Test @Test
@DisplayName("Menu 삭제 테스트") @DisplayName("Menu 삭제 테스트")
public void deleteMenuTest() { void deleteMenuTest() {
// given // given
MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1); MenuGroupCreateCommand groupCreateCommand = MenuGroupCreateCommand.of("uri", "name", 1);
menuService.createMenuGroup(groupCreateCommand); menuService.createMenuGroup(groupCreateCommand);
@ -205,19 +203,19 @@ public class MenuServiceTest extends MariaDBTestEnv {
@Test @Test
@DisplayName("MenuService method 호출 유효성 검사 테스트") @DisplayName("MenuService method 호출 유효성 검사 테스트")
public void validationTest() { void validationTest() {
// menuGroup create // menuGroup create
assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("").name("name").sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class); 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(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(null).sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("uri").name("name").sortOrder(null).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenuGroup(MenuGroupCreateCommand.builder().uri("uri").name("name").sortOrder(null).build())).isInstanceOf(ConstraintViolationException.class);
// menuGroup update // 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(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(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(null).sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> menuService.updateMenuGroup(MenuGroupUpdateCommand.builder().id(1L).uri("uri").name("name").sortOrder(null).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); assertThatThrownBy(() -> menuService.deleteMenu(null)).isInstanceOf(ConstraintViolationException.class);
// menu create // 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(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, 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", null, 1))).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "uri", "name", null))).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.createMenu(MenuCreateCommand.of(1L, "uri", "name", null))).isInstanceOf(ConstraintViolationException.class);
// menu update // 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(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(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(null).sortOrder(1).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("uri").name("name").sortOrder(null).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> menuService.updateMenu(MenuUpdateCommand.builder().id(1L).uri("uri").name("name").sortOrder(null).build())).isInstanceOf(ConstraintViolationException.class);

View File

@ -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.Role;
import com.bpgroup.poc.admin.domain.admin.entity.RoleRepository; 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.env.MariaDBTestEnv;
import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleCreate; import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateCommand;
import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete; import com.bpgroup.poc.admin.web.main.admin.role.service.RoleCreateResult;
import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleUpdate; import com.bpgroup.poc.admin.web.main.admin.role.service.RoleService;
import jakarta.persistence.EntityManager; 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.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -15,14 +15,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Transactional @Transactional
@DisplayName("Role Service 테스트") @DisplayName("Role Service 테스트")
class RoleServiceTest extends MariaDBTestEnv { class RoleServiceTest extends MariaDBTestEnv {
@Autowired
private EntityManager entityManager;
@Autowired @Autowired
private RoleService roleService; private RoleService roleService;
@ -38,66 +36,81 @@ class RoleServiceTest extends MariaDBTestEnv {
@DisplayName("Role 생성 테스트") @DisplayName("Role 생성 테스트")
void createRoleTest() { void createRoleTest() {
// given // given
RoleCreate.Request request = new RoleCreate.Request(); RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder()
request.setName("TEST"); .name("TEST")
request.setDescription("TEST"); .description("TEST")
.build();
// when // when
RoleCreate.Response response = roleService.create(request); RoleCreateResult createResult = roleService.create(roleCreateCommand);
// then // then
assertThat(response.getId()).isNotNull(); assertThat(createResult.getId()).isNotNull();
assertThat(response.getResultCode()).isEqualTo("0000");
} }
@Test @Test
@DisplayName("Role 수정 테스트") @DisplayName("Role 수정 테스트")
void updateRoleTest() { void updateRoleTest() {
// given // given
Role createRole = roleRepository.save(RoleCreateCommand.builder() RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder()
.name("TEST") .name("TEST")
.description("TEST") .description("TEST")
.build() .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");
RoleCreateResult createResult = roleService.create(roleCreateCommand);
flushAndClear(); flushAndClear();
Role findRole = roleRepository.findById(createRole.getId()).orElseThrow(); RoleUpdateCommand roleUpdateCommand = RoleUpdateCommand.builder()
assertThat(findRole.getName()).isEqualTo("TEST2"); .id(createResult.getId())
assertThat(findRole.getDescription()).isEqualTo("TEST2"); .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 @Test
@DisplayName("Role 삭제 테스트") @DisplayName("Role 삭제 테스트")
void deleteRoleTest() { void deleteRoleTest() {
// given // given
Role createRole = roleRepository.save(RoleCreateCommand.builder() RoleCreateCommand roleCreateCommand = RoleCreateCommand.builder()
.name("TEST") .name("TEST")
.description("TEST") .description("TEST")
.build() .build();
.toEntity());
RoleDelete.Request request = new RoleDelete.Request(); RoleCreateResult createResult = roleService.create(roleCreateCommand);
request.setId(createRole.getId()); flushAndClear();
// when // when
RoleDelete.Response response = roleService.delete(request); roleService.delete(createResult.getId());
flushAndClear();
// then // then
assertThat(response.getResultCode()).isEqualTo("0000"); assertThat(roleRepository.findById(createResult.getId())).isEmpty();
flushAndClear();
assertThat(roleRepository.findById(createRole.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);
}
} }