admin: 관리자 등록/수정/삭제 테스트 코드 추가
This commit is contained in:
parent
5c319a2ae3
commit
bb7a218161
|
|
@ -1,7 +1,8 @@
|
|||
package com.bpgroup.poc.admin.domain.admin.service;
|
||||
package com.bpgroup.poc.admin.domain.admin.command;
|
||||
|
||||
import com.bpgroup.poc.admin.domain.admin.entity.Administrator;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
|
|
@ -21,6 +22,7 @@ public class AdministratorCreateCommand {
|
|||
@NotBlank
|
||||
private String name;
|
||||
|
||||
@Builder
|
||||
public static AdministratorCreateCommand of(String loginId, String password, String email, String name) {
|
||||
AdministratorCreateCommand command = new AdministratorCreateCommand();
|
||||
command.loginId = loginId;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.bpgroup.poc.admin.domain.admin.service;
|
||||
package com.bpgroup.poc.admin.domain.admin.command;
|
||||
|
||||
import com.bpgroup.poc.admin.domain.admin.entity.Administrator;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.bpgroup.poc.admin.domain.admin.service;
|
||||
package com.bpgroup.poc.admin.domain.admin.command;
|
||||
|
||||
import com.bpgroup.poc.admin.domain.admin.entity.Role;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.bpgroup.poc.admin.domain.admin.service;
|
||||
package com.bpgroup.poc.admin.domain.admin.command;
|
||||
|
||||
import com.bpgroup.poc.admin.domain.admin.entity.Role;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.bpgroup.poc.admin.domain.admin.service;
|
||||
package com.bpgroup.poc.admin.domain.admin.exception;
|
||||
|
||||
public class DuplicationAdministratorException extends RuntimeException {
|
||||
public DuplicationAdministratorException(String loginId) {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.bpgroup.poc.admin.domain.admin.service;
|
||||
package com.bpgroup.poc.admin.domain.admin.exception;
|
||||
|
||||
import com.bpgroup.poc.admin.domain.DomainException;
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
package com.bpgroup.poc.admin.domain.admin.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 AdministratorService {
|
||||
|
||||
private final AdministratorRepository administratorRepository;
|
||||
|
||||
public Long create(
|
||||
@NotNull @Valid AdministratorCreateCommand command
|
||||
) {
|
||||
// 대소문자 구별이 필요한 경우 인증 부분과 유효성 검사 부분 모두 변경이 필요하다.
|
||||
Optional<Administrator> administrator = administratorRepository.findByLoginId(command.getLoginId());
|
||||
if (administrator.isPresent()) {
|
||||
throw new DuplicationAdministratorException(command.getLoginId());
|
||||
}
|
||||
|
||||
Administrator createAdministrator = administratorRepository.save(command.toEntity());
|
||||
return createAdministrator.getId();
|
||||
}
|
||||
|
||||
public void update(
|
||||
@NotNull @Valid AdministratorUpdateCommand command
|
||||
) {
|
||||
Optional<Administrator> administrator = administratorRepository.findById(command.getId());
|
||||
if (administrator.isEmpty()) {
|
||||
throw new NotFoundAdministratorException();
|
||||
}
|
||||
|
||||
administrator.get().update(command.toEntity());
|
||||
}
|
||||
|
||||
public void delete(
|
||||
@NotNull Long id
|
||||
) {
|
||||
administratorRepository.deleteById(id);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorUpdat
|
|||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
@ -18,7 +19,8 @@ import java.util.List;
|
|||
@RequestMapping("/admin/management")
|
||||
public class AdministratorManagementRestController {
|
||||
|
||||
private final AdministratorManagementWebService administratorManagementWebService;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
private final AdministratorManagementService administratorManagementService;
|
||||
|
||||
/**
|
||||
* 전체 조회
|
||||
|
|
@ -26,7 +28,7 @@ public class AdministratorManagementRestController {
|
|||
*/
|
||||
@GetMapping("/list")
|
||||
public ResponseEntity<?> getAdministrators() {
|
||||
List<AdministratorFind.Response> response = administratorManagementWebService.findAll();
|
||||
List<AdministratorFind.Response> response = administratorManagementService.findAll();
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
|
|
@ -37,7 +39,7 @@ public class AdministratorManagementRestController {
|
|||
*/
|
||||
@GetMapping("/{loginId}")
|
||||
public ResponseEntity<?> getAdministrator(@PathVariable @NotBlank String loginId) {
|
||||
AdministratorFind.Response response = administratorManagementWebService.find(loginId);
|
||||
AdministratorFind.Response response = administratorManagementService.find(loginId);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
|
|
@ -52,7 +54,8 @@ public class AdministratorManagementRestController {
|
|||
@RequestBody @Validated AdministratorCreate.Request request,
|
||||
BindingResult bindingResult
|
||||
) {
|
||||
AdministratorCreate.Response response = administratorManagementWebService.create(request);
|
||||
request.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||
AdministratorCreate.Response response = administratorManagementService.create(request);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
|
|
@ -61,8 +64,9 @@ public class AdministratorManagementRestController {
|
|||
@RequestBody @Validated AdministratorUpdate.Request request,
|
||||
BindingResult bindingResult
|
||||
) {
|
||||
administratorManagementWebService.update(request);
|
||||
return ResponseEntity.ok().build();
|
||||
request.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||
AdministratorUpdate.Response response = administratorManagementService.update(request);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -76,8 +80,8 @@ public class AdministratorManagementRestController {
|
|||
@RequestBody @Validated AdministratorDelete.Request request,
|
||||
BindingResult bindingResult
|
||||
) {
|
||||
administratorManagementWebService.delete(request);
|
||||
return ResponseEntity.ok().build();
|
||||
AdministratorDelete.Response response = administratorManagementService.delete(request);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.management;
|
||||
|
||||
import com.bpgroup.poc.admin.domain.admin.service.AdministratorCreateCommand;
|
||||
import com.bpgroup.poc.admin.domain.admin.service.AdministratorService;
|
||||
import com.bpgroup.poc.admin.domain.admin.service.AdministratorUpdateCommand;
|
||||
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.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional
|
||||
public class AdministratorManagementWebService {
|
||||
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
private final AdministratorService administratorService;
|
||||
private final AdministratorManagementQueryRepository administratorManagementQueryRepository;
|
||||
|
||||
public AdministratorCreate.Response create(AdministratorCreate.Request request) {
|
||||
Long id = administratorService.create(AdministratorCreateCommand.of(
|
||||
request.getLoginId(),
|
||||
passwordEncoder.encode(request.getPassword()),
|
||||
request.getEmail(),
|
||||
request.getName()
|
||||
));
|
||||
|
||||
return AdministratorCreate.Response.builder()
|
||||
.id(id)
|
||||
.build();
|
||||
}
|
||||
|
||||
public AdministratorFind.Response find(@NotBlank String loginId) {
|
||||
return administratorManagementQueryRepository.findByLoginId(loginId);
|
||||
}
|
||||
|
||||
public void delete(AdministratorDelete.Request request) {
|
||||
administratorService.delete(request.getId());
|
||||
}
|
||||
|
||||
public void update(AdministratorUpdate.Request request) {
|
||||
administratorService.update(AdministratorUpdateCommand.of(
|
||||
request.getId(),
|
||||
passwordEncoder.encode(request.getPassword()),
|
||||
request.getEmail(),
|
||||
request.getName()
|
||||
));
|
||||
}
|
||||
|
||||
public List<AdministratorFind.Response> findAll() {
|
||||
return administratorManagementQueryRepository.findAll();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,11 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.management.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 AdministratorDelete {
|
||||
|
||||
|
|
@ -11,4 +15,24 @@ public class AdministratorDelete {
|
|||
private Long id;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
public static class Response extends CommonResponse {
|
||||
@Builder
|
||||
public static AdministratorDelete.Response success() {
|
||||
AdministratorDelete.Response response = new AdministratorDelete.Response();
|
||||
response.resultCode = "0000";
|
||||
response.resultMessage = "Success";
|
||||
return response;
|
||||
}
|
||||
|
||||
@Builder
|
||||
public static AdministratorDelete.Response fail(String resultMessage) {
|
||||
AdministratorDelete.Response response = new AdministratorDelete.Response();
|
||||
response.resultCode = "9999";
|
||||
response.resultMessage = resultMessage;
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,12 @@
|
|||
package com.bpgroup.poc.admin.web.main.admin.management.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 AdministratorUpdate {
|
||||
|
||||
|
|
@ -24,4 +28,23 @@ public class AdministratorUpdate {
|
|||
private String name;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
public static class Response extends CommonResponse {
|
||||
@Builder
|
||||
public static AdministratorUpdate.Response success() {
|
||||
AdministratorUpdate.Response response = new AdministratorUpdate.Response();
|
||||
response.resultCode = "0000";
|
||||
response.resultMessage = "Success";
|
||||
return response;
|
||||
}
|
||||
|
||||
@Builder
|
||||
public static AdministratorUpdate.Response fail(String resultMessage) {
|
||||
AdministratorUpdate.Response response = new AdministratorUpdate.Response();
|
||||
response.resultCode = "9999";
|
||||
response.resultMessage = resultMessage;
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ 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.service.RoleCreateCommand;
|
||||
import com.bpgroup.poc.admin.domain.admin.service.RoleUpdateCommand;
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,115 @@
|
|||
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 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.assertThat;
|
||||
|
||||
@Transactional
|
||||
@DisplayName("AdministratorService 테스트")
|
||||
public class AdministratorServiceTest extends MariaDBTestEnv {
|
||||
|
||||
@Autowired
|
||||
private AdministratorManagementService service;
|
||||
|
||||
@Autowired
|
||||
private AdministratorRepository repository;
|
||||
|
||||
@Autowired
|
||||
private AdministratorManagementQueryRepository queryRepository;
|
||||
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
repository.deleteAll();
|
||||
}
|
||||
|
||||
@DisplayName("Administrator 등록 테스트")
|
||||
@Test
|
||||
public void createAdministratorTest() {
|
||||
// given
|
||||
AdministratorCreate.Request request = new AdministratorCreate.Request();
|
||||
request.setLoginId("test");
|
||||
request.setPassword("test");
|
||||
request.setEmail("test");
|
||||
request.setName("test");
|
||||
|
||||
// when
|
||||
AdministratorCreate.Response response = service.create(request);
|
||||
|
||||
// then
|
||||
assertThat(response.getResultCode()).isEqualTo("0000");
|
||||
}
|
||||
|
||||
@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");
|
||||
|
||||
// when
|
||||
AdministratorUpdate.Response updateResponse = service.update(updateRequest);
|
||||
|
||||
// then
|
||||
assertThat(updateResponse.getResultCode()).isEqualTo("0000");
|
||||
|
||||
flushAndClear();
|
||||
Administrator findAdministrator = repository.findById(administrator.getId()).orElseThrow();
|
||||
assertThat(findAdministrator.getPassword()).isEqualTo("test2");
|
||||
assertThat(findAdministrator.getEmail()).isEqualTo("test2");
|
||||
assertThat(findAdministrator.getName()).isEqualTo("test2");
|
||||
}
|
||||
|
||||
@DisplayName("Administrator 삭제 테스트")
|
||||
@Test
|
||||
public void deleteAdministratorTest() {
|
||||
// given
|
||||
Administrator administrator = repository.save(
|
||||
AdministratorCreateCommand.builder()
|
||||
.loginId("test")
|
||||
.password("test")
|
||||
.email("test")
|
||||
.name("test")
|
||||
.build()
|
||||
.toEntity()
|
||||
);
|
||||
|
||||
AdministratorDelete.Request request = new AdministratorDelete.Request();
|
||||
request.setId(administrator.getId());
|
||||
|
||||
// when
|
||||
AdministratorDelete.Response deleteResponse = service.delete(request);
|
||||
|
||||
// then
|
||||
assertThat(deleteResponse.getResultCode()).isEqualTo("0000");
|
||||
|
||||
flushAndClear();
|
||||
assertThat(repository.findById(administrator.getId())).isEmpty();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -2,7 +2,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.admin.service.RoleCreateCommand;
|
||||
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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue