feature/admin #7

Merged
gh.yeom merged 8 commits from feature/admin into main 2024-05-16 16:36:02 +09:00
13 changed files with 189 additions and 65 deletions
Showing only changes of commit 7faf94a8c9 - Show all commits

View File

@ -1,6 +1,7 @@
package com.bpgroup.poc.admin.domain.entity.administrator; package com.bpgroup.poc.admin.domain.entity.administrator;
import com.bpgroup.poc.admin.domain.entity.BaseEntity; import com.bpgroup.poc.admin.domain.entity.BaseEntity;
import com.bpgroup.poc.admin.domain.entity.role.Role;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@ -26,7 +27,7 @@ public class Administrator extends BaseEntity {
@Column(name = "name", length = 100, nullable = false) @Column(name = "name", length = 100, nullable = false)
private String name; private String name;
@OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY) @OneToOne(mappedBy = "administrator", fetch = FetchType.LAZY, orphanRemoval = true)
private AdministratorRole administratorRole; private AdministratorRole administratorRole;
@Builder @Builder
@ -45,4 +46,7 @@ public class Administrator extends BaseEntity {
this.name = administrator.name; this.name = administrator.name;
} }
public void setAdministratorRole(Role role) {
this.administratorRole = AdministratorRole.of(this, role);
}
} }

View File

@ -3,6 +3,7 @@ package com.bpgroup.poc.admin.domain.entity.administrator;
import com.bpgroup.poc.admin.domain.entity.BaseEntity; import com.bpgroup.poc.admin.domain.entity.BaseEntity;
import com.bpgroup.poc.admin.domain.entity.role.Role; import com.bpgroup.poc.admin.domain.entity.role.Role;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@Getter @Getter
@ -14,12 +15,23 @@ public class AdministratorRole extends BaseEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "administrator_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) @JoinColumn(name = "administrator_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
private Administrator administrator; private Administrator administrator;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
private Role role; private Role role;
@Builder
public static AdministratorRole of(Administrator administrator, Role role) {
AdministratorRole administratorRole = new AdministratorRole();
administratorRole.administrator = administrator;
administratorRole.role = role;
return administratorRole;
}
public void update(Role findRole) {
this.role = findRole;
}
} }

View File

@ -0,0 +1,6 @@
package com.bpgroup.poc.admin.domain.entity.administrator;
import org.springframework.data.jpa.repository.JpaRepository;
public interface AdministratorRoleRepository extends JpaRepository<AdministratorRole, Long> {
}

View File

@ -40,10 +40,6 @@ public class Role extends BaseEntity {
this.description = updateRole.description; this.description = updateRole.description;
} }
public void addRoleMenu(RoleMenu roleMenu) {
this.roleMenus.add(roleMenu);
}
public void deleteRoleMenus() { public void deleteRoleMenus() {
this.roleMenus.clear(); this.roleMenus.clear();
} }

View File

@ -84,6 +84,7 @@ public class AdministratorManagementRestController {
.password(passwordEncoder.encode(request.getPassword())) .password(passwordEncoder.encode(request.getPassword()))
.name(request.getName()) .name(request.getName())
.email(request.getEmail()) .email(request.getEmail())
.roleId(request.getRoleId())
.build() .build()
); );
@ -93,7 +94,7 @@ public class AdministratorManagementRestController {
/** /**
* 관리자 삭제 * 관리자 삭제
* *
* @param request 요청 * @param request 요청
* @param bindingResult Validation 결과 * @param bindingResult Validation 결과
* @return 응답 * @return 응답
*/ */

View File

@ -13,15 +13,14 @@ public class AdministratorCreate {
public static class Request { public static class Request {
@NotBlank @NotBlank
private String loginId; private String loginId;
@NotBlank @NotBlank
private String password; private String password;
@NotBlank @NotBlank
private String email; private String email;
@NotBlank @NotBlank
private String name; private String name;
@NotBlank
private String roleId;
} }
@Getter @Getter

View File

@ -14,15 +14,14 @@ public class AdministratorUpdate {
public static class Request { public static class Request {
@NotNull @NotNull
private Long id; private Long id;
@NotBlank @NotBlank
private String password; private String password;
@NotBlank @NotBlank
private String email; private String email;
@NotBlank @NotBlank
private String name; private String name;
@NotNull
private Long roleId;
} }
@Getter @Getter

View File

@ -2,6 +2,7 @@ package com.bpgroup.poc.admin.web.main.admin.management.service;
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
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;
@ -9,26 +10,25 @@ import lombok.ToString;
@Getter @Getter
@ToString @ToString
public class AdministratorCreateCommand { public class AdministratorCreateCommand {
@NotBlank @NotBlank
private String loginId; private String loginId;
@NotBlank @NotBlank
private String password; private String password;
@NotBlank @NotBlank
private String email; private String email;
@NotBlank @NotBlank
private String name; private String name;
@NotNull
private Long roleId;
@Builder @Builder
public static AdministratorCreateCommand of(String loginId, String password, String email, String name) { public static AdministratorCreateCommand of(String loginId, String password, String email, String name, Long roleId) {
AdministratorCreateCommand command = new AdministratorCreateCommand(); AdministratorCreateCommand command = new AdministratorCreateCommand();
command.loginId = loginId; command.loginId = loginId;
command.password = password; command.password = password;
command.email = email; command.email = email;
command.name = name; command.name = name;
command.roleId = roleId;
return command; return command;
} }

View File

@ -2,6 +2,10 @@ package com.bpgroup.poc.admin.web.main.admin.management.service;
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository;
import com.bpgroup.poc.admin.domain.entity.role.Role;
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -17,12 +21,26 @@ import java.util.Optional;
@Transactional @Transactional
public class AdministratorManagementService { public class AdministratorManagementService {
private final AdministratorRepository repository; private final AdministratorRepository administratorRepository;
private final AdministratorRoleRepository administratorRoleRepository;
private final RoleRepository roleRepository;
public AdministratorCreateResult create( public AdministratorCreateResult create(
@NotNull @Valid AdministratorCreateCommand command @NotNull @Valid AdministratorCreateCommand command
) { ) {
Administrator admin = repository.save(command.toEntity()); Optional<Role> findRole = roleRepository.findById(command.getRoleId());
if (findRole.isEmpty()) {
throw new IllegalArgumentException("Not found role");
}
Administrator admin = administratorRepository.save(command.toEntity());
AdministratorRole administratorRole = AdministratorRole.builder()
.administrator(admin)
.role(findRole.get())
.build();
administratorRoleRepository.save(administratorRole);
return AdministratorCreateResult.builder() return AdministratorCreateResult.builder()
.id(admin.getId()) .id(admin.getId())
@ -32,21 +50,29 @@ public class AdministratorManagementService {
public void update( public void update(
@NotNull @Valid AdministratorUpdateCommand command @NotNull @Valid AdministratorUpdateCommand command
) { ) {
Optional<Administrator> findAdministrator = repository.findById(command.getId()); Optional<Administrator> findAdministrator = administratorRepository.findById(command.getId());
if (findAdministrator.isEmpty()) { if (findAdministrator.isEmpty()) {
throw new IllegalArgumentException("Not found administrator"); throw new IllegalArgumentException("Not found administrator");
} }
Administrator administrator = findAdministrator.get(); Administrator administrator = findAdministrator.get();
administrator.update(command.toEntity()); administrator.update(command.toEntity());
Optional<Role> findRole = roleRepository.findById(command.getRoleId());
if (findRole.isEmpty()) {
throw new IllegalArgumentException("Not found role");
}
Role role = findRole.get();
administrator.getAdministratorRole().update(role);
} }
public void delete(@NotNull Long id) { public void delete(@NotNull Long id) {
Optional<Administrator> findAdministrator = repository.findById(id); Optional<Administrator> findAdministrator = administratorRepository.findById(id);
if (findAdministrator.isEmpty()) { if (findAdministrator.isEmpty()) {
throw new IllegalArgumentException("Not found administrator"); throw new IllegalArgumentException("Not found administrator");
} }
repository.deleteById(id); administratorRepository.deleteById(id);
} }
} }

View File

@ -10,26 +10,25 @@ import lombok.ToString;
@Getter @Getter
@ToString @ToString
public class AdministratorUpdateCommand { public class AdministratorUpdateCommand {
@NotNull @NotNull
private Long id; private Long id;
@NotBlank @NotBlank
private String password; private String password;
@NotBlank @NotBlank
private String email; private String email;
@NotBlank @NotBlank
private String name; private String name;
@NotNull
private Long roleId;
@Builder @Builder
public static AdministratorUpdateCommand of(Long id, String password, String email, String name) { public static AdministratorUpdateCommand of(Long id, String password, String email, String name, Long roleId) {
AdministratorUpdateCommand command = new AdministratorUpdateCommand(); AdministratorUpdateCommand command = new AdministratorUpdateCommand();
command.id = id; command.id = id;
command.password = password; command.password = password;
command.email = email; command.email = email;
command.name = name; command.name = name;
command.roleId = roleId;
return command; return command;
} }

View File

@ -82,8 +82,6 @@ public class RoleService {
Menu menu = findMenu.get(); Menu menu = findMenu.get();
RoleMenu roleMenu = RoleMenu.of(role, menu); RoleMenu roleMenu = RoleMenu.of(role, menu);
role.addRoleMenu(roleMenu);
roleMenuRepository.save(roleMenu); roleMenuRepository.save(roleMenu);
}); });

View File

@ -2,6 +2,10 @@ package com.bpgroup.poc.admin.web.main.admin.administrator;
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole;
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRoleRepository;
import com.bpgroup.poc.admin.domain.entity.role.Role;
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
import com.bpgroup.poc.admin.env.MariaDBTestEnv; import com.bpgroup.poc.admin.env.MariaDBTestEnv;
import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateCommand; 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.AdministratorCreateResult;
@ -20,23 +24,38 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
@Transactional @Transactional
@DisplayName("AdministratorService 테스트") @DisplayName("AdministratorService 테스트")
public class AdministratorServiceTest extends MariaDBTestEnv { class AdministratorServiceTest extends MariaDBTestEnv {
@Autowired @Autowired
private AdministratorManagementService service; private AdministratorManagementService service;
@Autowired @Autowired
private AdministratorRepository repository; private AdministratorRepository administratorRepository;
@Autowired
private AdministratorRoleRepository administratorRoleRepository;
@Autowired
private RoleRepository roleRepository;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
repository.deleteAll(); administratorRepository.deleteAll();
administratorRoleRepository.deleteAll();
roleRepository.deleteAll();
} }
@DisplayName("Administrator 등록 테스트")
@Test @Test
public void createAdministratorTest() { void createAdministratorTest() {
Role role = roleRepository.save(
Role.builder()
.name("test")
.description("test")
.build()
);
flushAndClear();
// when // when
AdministratorCreateResult createResult = service.create( AdministratorCreateResult createResult = service.create(
AdministratorCreateCommand.builder() AdministratorCreateCommand.builder()
@ -44,20 +63,49 @@ public class AdministratorServiceTest extends MariaDBTestEnv {
.password("test") .password("test")
.email("test") .email("test")
.name("test") .name("test")
.roleId(role.getId())
.build() .build()
); );
flushAndClear();
// then // then
assertThat(createResult.getId()).isNotNull(); assertThat(createResult.getId()).isNotNull();
Administrator findAdministrator = administratorRepository.findById(createResult.getId()).orElseThrow();
assertThat(findAdministrator.getAdministratorRole().getRole().getName()).isEqualTo("test");
} }
@DisplayName("Administrator 수정 테스트") @DisplayName("Administrator 수정 테스트")
@Test @Test
public void updateAdministratorTest() { void updateAdministratorTest() {
// given // given
Administrator saveAdministrator = createAdministrator(); Administrator saveAdministrator = createAdministrator();
flushAndClear(); flushAndClear();
Role saveRole = roleRepository.save(
Role.builder()
.name("test")
.description("test")
.build()
);
flushAndClear();
Role updateRole = roleRepository.save(
Role.builder()
.name("test2")
.description("test2")
.build()
);
flushAndClear();
administratorRoleRepository.save(
AdministratorRole.builder()
.administrator(saveAdministrator)
.role(saveRole)
.build()
);
flushAndClear();
// when // when
service.update( service.update(
AdministratorUpdateCommand.builder() AdministratorUpdateCommand.builder()
@ -65,20 +113,23 @@ public class AdministratorServiceTest extends MariaDBTestEnv {
.password("test2") .password("test2")
.email("test2") .email("test2")
.name("test2") .name("test2")
.roleId(updateRole.getId())
.build() .build()
); );
flushAndClear(); flushAndClear();
// then // then
Administrator findAdministrator = repository.findById(saveAdministrator.getId()).orElseThrow(); Administrator findAdministrator = administratorRepository.findById(saveAdministrator.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");
assertThat(findAdministrator.getAdministratorRole().getRole().getName()).isEqualTo("test2");
} }
@DisplayName("Administrator 삭제 테스트") @DisplayName("Administrator 삭제 테스트")
@Test @Test
public void deleteAdministratorTest() { void deleteAdministratorTest() {
// given // given
Administrator saveAdministrator = createAdministrator(); Administrator saveAdministrator = createAdministrator();
flushAndClear(); flushAndClear();
@ -88,42 +139,75 @@ public class AdministratorServiceTest extends MariaDBTestEnv {
flushAndClear(); flushAndClear();
// then // then
assertThat(repository.findById(saveAdministrator.getId())).isEmpty(); assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty();
}
@DisplayName("Administrator 삭제 시 Administrator 동시 삭제 테스트")
@Test
void deleteAdministratorAndAdministratorRoleTest() {
// given
Administrator saveAdministrator = createAdministrator();
flushAndClear();
Role saveRole = roleRepository.save(
Role.builder()
.name("test")
.description("test")
.build()
);
flushAndClear();
administratorRoleRepository.save(
AdministratorRole.builder()
.administrator(saveAdministrator)
.role(saveRole)
.build()
);
flushAndClear();
// when
service.delete(saveAdministrator.getId());
flushAndClear();
// then
assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty();
assertThat(administratorRoleRepository.findAll()).isEmpty();
} }
@NotNull @NotNull
private Administrator createAdministrator() { private Administrator createAdministrator() {
return repository.save( Administrator administrator = Administrator.builder()
Administrator.builder() .loginId("test2")
.loginId("test2") .password("test2")
.password("test2") .email("test2")
.email("test2") .name("test2")
.name("test2") .build();
.build() return administratorRepository.save(administrator);
);
} }
@Test @Test
@DisplayName("AdministratorService method 호출 유효성 검사 테스트") @DisplayName("AdministratorService method 호출 유효성 검사 테스트")
void validationTest() { void validationTest() {
// create // create
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId(null).password("password").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("").password("password").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("").password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password(null).email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email(null).name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name(null).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("name").roleId(null).build())).isInstanceOf(ConstraintViolationException.class);
// uodate // update
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(null).password("password").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password(null).email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("").email("email").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email(null).name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("").name("name").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name(null).build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("").build())).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class);
assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("name").roleId(null).build())).isInstanceOf(ConstraintViolationException.class);
// delete // delete
assertThatThrownBy(() -> service.delete(null)).isInstanceOf(ConstraintViolationException.class); assertThatThrownBy(() -> service.delete(null)).isInstanceOf(ConstraintViolationException.class);

View File

@ -132,7 +132,7 @@ class RoleServiceTest extends MariaDBTestEnv {
flushAndClear(); flushAndClear();
// then // then
assertThat(roleMenuRepository.findById(saveRole.getId())).isNotEmpty(); assertThat(roleMenuRepository.findAll()).size().isEqualTo(2);
} }
@Test @Test