Skip to content

Commit

Permalink
Role: update roleRepository to use JpaRepository
Browse files Browse the repository at this point in the history
  • Loading branch information
GeorgeAnguah committed Dec 10, 2024
1 parent 1aa523b commit e100aa6
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.developersboard.backend.persistent.repository.impl;

import com.developersboard.backend.persistent.domain.user.Role;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

/**
* The RoleRepositoryImplV2 class exposes implementation from JpaRepository on Role entity .
*
* @author George Anguah
* @version 1.0
* @since 1.0
*/
@Repository
public interface RoleRepositoryImplV2 extends JpaRepository<Role, Integer> {

Optional<Role> findFirstByName(String name);
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.developersboard.backend.service.user.impl;

import com.developersboard.backend.persistent.domain.user.Role;
import com.developersboard.backend.persistent.repository.RoleRepository;
import com.developersboard.backend.persistent.repository.impl.RoleRepositoryImplV2;
import com.developersboard.backend.service.user.RoleService;
import com.developersboard.constant.CacheConstants;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.Validate;
Expand All @@ -24,7 +25,7 @@
@Transactional(readOnly = true)
public class RoleServiceImpl implements RoleService {

private final transient RoleRepository roleRepository;
private final transient RoleRepositoryImplV2 roleRepository;

/**
* Create the roleEntity with the roleEntity instance given.
Expand All @@ -37,7 +38,7 @@ public class RoleServiceImpl implements RoleService {
public Role save(Role roleEntity) {
Validate.notNull(roleEntity, "The roleEntity cannot be null");

var persistedRole = roleRepository.merge(roleEntity);
var persistedRole = roleRepository.save(roleEntity);
LOG.info("Role merged successfully {}", persistedRole);

return persistedRole;
Expand All @@ -53,7 +54,7 @@ public Role save(Role roleEntity) {
@Cacheable(CacheConstants.ROLES)
public Role findByName(String name) {
Validate.notNull(name, "The name cannot be null");

return roleRepository.findByName(name);
Optional<Role> roleOptional = roleRepository.findFirstByName(name);
return roleOptional.orElse(null);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.developersboard.backend.service.user;

import com.developersboard.backend.persistent.domain.user.Role;
import com.developersboard.backend.persistent.repository.RoleRepository;
import com.developersboard.backend.persistent.repository.impl.RoleRepositoryImplV2;
import com.developersboard.backend.service.user.impl.RoleServiceImpl;
import com.developersboard.enums.RoleType;
import java.util.Optional;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -18,7 +19,7 @@ class RoleServiceTest {

@InjectMocks private transient RoleServiceImpl roleService;

@Mock private transient RoleRepository roleEntityRepository;
@Mock private transient RoleRepositoryImplV2 roleEntityRepository;

private transient Role roleEntity;

Expand All @@ -29,15 +30,16 @@ void setUp() {

@Test
void saveRole() {
Mockito.when(roleEntityRepository.merge(roleEntity)).thenReturn(roleEntity);
Mockito.when(roleEntityRepository.save(roleEntity)).thenReturn(roleEntity);

Role storedRoleDetails = roleService.save(this.roleEntity);
Assertions.assertNotNull(storedRoleDetails);
}

@Test
void getRoleByName() {
Mockito.when(roleEntityRepository.findByName(roleEntity.getName())).thenReturn(roleEntity);
Mockito.when(roleEntityRepository.findFirstByName(roleEntity.getName()))
.thenReturn(Optional.of(roleEntity));

Role storedRoleDetails = roleService.findByName(roleEntity.getName());
Assertions.assertEquals(roleEntity, storedRoleDetails);
Expand Down

0 comments on commit e100aa6

Please sign in to comment.