Skip to content

Commit

Permalink
[MODCON-127] - Covered with Unit Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
azizbekxm committed Dec 19, 2023
1 parent 2a7b946 commit 71dc94d
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ public void delete(UUID consortiumId, String tenantId) {
if (tenant.isEmpty()) {
throw new ResourceNotFoundException("id", tenantId);
}
if (tenant.get().getIsCentral()) {
if (Boolean.TRUE.equals(tenant.get().getIsCentral())) {
throw new IllegalArgumentException(String.format("central tenant '%s' cannot be deleted", tenantId));
}

Expand Down
77 changes: 34 additions & 43 deletions src/test/java/org/folio/consortia/service/TenantServiceTest.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package org.folio.consortia.service;

import static org.folio.consortia.utils.EntityUtils.TENANT_ID;
import static org.folio.consortia.utils.EntityUtils.createConsortiaConfiguration;
import static org.folio.consortia.utils.EntityUtils.createOkapiHeaders;
import static org.folio.consortia.utils.EntityUtils.createTenant;
import static org.folio.consortia.utils.EntityUtils.createTenantDetailsEntity;
import static org.folio.consortia.utils.EntityUtils.createTenantEntity;
Expand All @@ -23,7 +25,6 @@

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -55,7 +56,6 @@
import org.folio.consortia.service.impl.TenantServiceImpl;
import org.folio.spring.FolioExecutionContext;
import org.folio.spring.FolioModuleMetadata;
import org.folio.spring.integration.XOkapiHeaders;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
Expand All @@ -74,7 +74,7 @@
class TenantServiceTest {

private final static String CONSORTIUM_ID = "7698e46-c3e3-11ed-afa1-0242ac120002";
private static final String CENTRAL_TENANT_ID = "diku";

@InjectMocks
private TenantServiceImpl tenantService;
@Mock
Expand All @@ -92,7 +92,8 @@ class TenantServiceTest {
@Mock
private ConsortiumService consortiumService;
@Mock
private FolioExecutionContext folioExecutionContext = new FolioExecutionContext() {};
private FolioExecutionContext folioExecutionContext = new FolioExecutionContext() {
};
@Mock
private ConsortiaConfigurationClient configurationClient;
@Mock
Expand Down Expand Up @@ -181,11 +182,11 @@ void shouldSaveNotCentralTenantWithNewUserAndPermissions() {
when(tenantRepository.existsById(any())).thenReturn(false);
when(tenantRepository.findCentralTenant()).thenReturn(Optional.of(centralTenant));
when(tenantDetailsRepository.save(any(TenantDetailsEntity.class))).thenReturn(localTenantDetailsEntity);
doNothing().when(configurationClient).saveConfiguration(createConsortiaConfiguration(CENTRAL_TENANT_ID));
doNothing().when(configurationClient).saveConfiguration(createConsortiaConfiguration(TENANT_ID));
doNothing().when(userTenantsClient).postUserTenant(any());
when(conversionService.convert(localTenantDetailsEntity, Tenant.class)).thenReturn(tenant);
doReturn(folioExecutionContext).when(contextHelper).getSystemUserFolioExecutionContext(anyString());
when(folioExecutionContext.getTenantId()).thenReturn("diku");
when(folioExecutionContext.getTenantId()).thenReturn(TENANT_ID);

var tenant1 = tenantService.save(consortiumId, UUID.fromString(adminUser.getId()), tenant);

Expand All @@ -206,7 +207,7 @@ void shouldSaveCentralTenantWithExistingAndPermissions() throws JsonProcessingEx
UUID consortiumId = UUID.fromString(CONSORTIUM_ID);
TenantDetailsEntity tenantDetailsEntity = createTenantDetailsEntity("ABC1", "TestName1");
Tenant tenant = createTenant("TestID", "Test", true);
TenantEntity centralTenant = createTenantEntity("diku", "diku");
TenantEntity centralTenant = createTenantEntity(TENANT_ID);
PermissionUser permissionUser = new PermissionUser();
permissionUser.setPermissions(List.of("users.collection.get"));
PermissionUserCollection permissionUserCollection = new PermissionUserCollection();
Expand All @@ -223,15 +224,12 @@ void shouldSaveCentralTenantWithExistingAndPermissions() throws JsonProcessingEx
when(tenantRepository.existsById(any())).thenReturn(false);
when(tenantRepository.findCentralTenant()).thenReturn(Optional.of(centralTenant));
when(tenantDetailsRepository.save(any(TenantDetailsEntity.class))).thenReturn(tenantDetailsEntity);
doNothing().when(configurationClient).saveConfiguration(createConsortiaConfiguration(CENTRAL_TENANT_ID));
doNothing().when(configurationClient).saveConfiguration(createConsortiaConfiguration(TENANT_ID));
doNothing().when(userTenantsClient).postUserTenant(any());
when(conversionService.convert(tenantDetailsEntity, Tenant.class)).thenReturn(tenant);
doReturn(folioExecutionContext).when(contextHelper).getSystemUserFolioExecutionContext(anyString());
when(folioExecutionContext.getTenantId()).thenReturn("diku");
Map<String, Collection<String>> okapiHeaders = new HashMap<>();
okapiHeaders.put(XOkapiHeaders.TENANT, List.of("diku"));
when(folioExecutionContext.getOkapiHeaders()).thenReturn(okapiHeaders);
when(usersClient.getUserCollection(anyString(), anyInt(), anyInt())).thenReturn(userCollection);
doReturn(folioExecutionContext).when(contextHelper).getSystemUserFolioExecutionContext(anyString());
mockOkapiHeaders();

var tenant1 = tenantService.save(consortiumId, UUID.randomUUID(), tenant);

Expand All @@ -254,14 +252,11 @@ void shouldUpdateTenant() {
TenantEntity tenantEntity1 = createTenantEntity("TestID", "TestName1");
Tenant tenant = createTenant("TestID", "TestName2");

Map<String, Collection<String>> okapiHeaders = new HashMap<>();
okapiHeaders.put(XOkapiHeaders.TENANT, List.of("diku"));
when(folioExecutionContext.getOkapiHeaders()).thenReturn(okapiHeaders);

when(consortiumRepository.existsById(consortiumId)).thenReturn(true);
when(tenantRepository.existsById(any())).thenReturn(true);
when(tenantRepository.save(any(TenantEntity.class))).thenReturn(tenantEntity1);
when(conversionService.convert(tenantEntity1, Tenant.class)).thenReturn(tenant);
mockOkapiHeaders();

var tenant1 = tenantService.update(UUID.fromString(CONSORTIUM_ID), tenant.getId(), tenant);
Assertions.assertEquals(tenant.getId(), tenant1.getId());
Expand All @@ -271,26 +266,22 @@ void shouldUpdateTenant() {
@Test
void shouldDeleteTenant() {
UUID consortiumId = UUID.randomUUID();
String tenantId = "diku";
var tenant = createTenantEntity(tenantId);
var deletingTenant = createTenantEntity(tenantId);
var tenant = createTenantEntity(TENANT_ID);
var deletingTenant = createTenantEntity(TENANT_ID);
deletingTenant.setIsDeleted(true);

doNothing().when(consortiumService).checkConsortiumExistsOrThrow(consortiumId);
doNothing().when(cleanupService).clearPublicationTables();
doReturn(deletingTenant).when(tenantRepository).save(deletingTenant);
when(tenantRepository.findById(tenant.getId())).thenReturn(Optional.of(tenant));
doReturn(folioExecutionContext).when(contextHelper).getSystemUserFolioExecutionContext(anyString());
when(folioExecutionContext.getTenantId()).thenReturn("diku");
Map<String, Collection<String>> okapiHeaders = new HashMap<>();
okapiHeaders.put(XOkapiHeaders.TENANT, List.of("diku"));
when(folioExecutionContext.getOkapiHeaders()).thenReturn(okapiHeaders);
mockOkapiHeaders();

tenantService.delete(consortiumId, tenantId);
tenantService.delete(consortiumId, TENANT_ID);

// Assert
verify(consortiumService).checkConsortiumExistsOrThrow(consortiumId);
verify(tenantRepository).findById(tenantId);
verify(tenantRepository).findById(TENANT_ID);
verify(tenantRepository).save(deletingTenant);
verify(cleanupService).clearPublicationTables();
verify(userTenantsClient).deleteUserTenants();
Expand All @@ -310,23 +301,22 @@ void testDeleteNonexistentTenant() {
}

@Test
void shouldThrowErrorWhenDeletingCentralTenant(){
void shouldThrowErrorWhenDeletingCentralTenant() {
UUID consortiumId = UUID.randomUUID();
String tenantId = "college";
var tenant = createTenantEntity(tenantId);
var tenant = createTenantEntity(TENANT_ID);
tenant.setIsCentral(true);
var deletingTenant = createTenantEntity(tenantId);
var deletingTenant = createTenantEntity(TENANT_ID);
deletingTenant.setIsDeleted(true);

doNothing().when(consortiumService).checkConsortiumExistsOrThrow(consortiumId);
when(tenantRepository.findById(tenant.getId())).thenReturn(Optional.of(tenant));

// Assert
assertThrows(java.lang.IllegalArgumentException.class, () ->
tenantService.delete(consortiumId, tenantId));
tenantService.delete(consortiumId, TENANT_ID));

verify(consortiumService).checkConsortiumExistsOrThrow(consortiumId);
verify(tenantRepository).findById(tenantId);
verify(tenantRepository).findById(TENANT_ID);
verifyNoInteractions(cleanupService);
verifyNoInteractions(userTenantsClient);
}
Expand Down Expand Up @@ -405,15 +395,12 @@ void shouldThrowResourceAlreadyExistExceptionWhileSavingCentralTenant() {
void shouldNotSaveTenantForDuplicateId() {
TenantEntity tenantEntity1 = createTenantEntity("TestID", "Test");
Tenant tenant = createTenant("TestID", "Testq", true);
TenantEntity centralTenant = createTenantEntity("diku", "diku");
TenantEntity centralTenant = createTenantEntity(TENANT_ID);

when(tenantRepository.existsById(any())).thenReturn(true);
when(conversionService.convert(tenantEntity1, Tenant.class)).thenReturn(tenant);
when(tenantRepository.findCentralTenant()).thenReturn(Optional.of(centralTenant));
when(folioExecutionContext.getTenantId()).thenReturn("diku");
Map<String, Collection<String>> okapiHeaders = new HashMap<>();
okapiHeaders.put(XOkapiHeaders.TENANT, List.of("diku"));
when(folioExecutionContext.getOkapiHeaders()).thenReturn(okapiHeaders);
mockOkapiHeaders();

assertThrows(org.folio.consortia.exception.ResourceAlreadyExistException.class, () ->
tenantService.save(UUID.fromString(CONSORTIUM_ID), null, tenant));
Expand All @@ -436,28 +423,32 @@ void shouldNotRetrieveEntityByTenantId() {
@Test
void shouldGetTenantDetails() {
UUID consortiumId = UUID.randomUUID();
String tenantId = "diku";

var tenantDetailsEntity = new TenantDetailsEntity();
var tenantDetailsExpected = new TenantDetails();

when(consortiumRepository.existsById(consortiumId)).thenReturn(true);
when(tenantDetailsRepository.findById(tenantId)).thenReturn(Optional.of(tenantDetailsEntity));
when(tenantDetailsRepository.findById(TENANT_ID)).thenReturn(Optional.of(tenantDetailsEntity));
when(conversionService.convert(tenantDetailsEntity, TenantDetails.class)).thenReturn(tenantDetailsExpected);

var tenantDetails = tenantService.getTenantDetailsById(consortiumId, tenantId);
var tenantDetails = tenantService.getTenantDetailsById(consortiumId, TENANT_ID);
assertEquals(tenantDetailsExpected, tenantDetails);
}

@Test
void testGetTenantDetailsNonExistingTenant() {
UUID consortiumId = UUID.randomUUID();
String tenantId = "123";

when(consortiumRepository.existsById(consortiumId)).thenReturn(true);
when(tenantDetailsRepository.findById(tenantId)).thenReturn(Optional.empty());
when(tenantDetailsRepository.findById(TENANT_ID)).thenReturn(Optional.empty());

assertThrows(ResourceNotFoundException.class, () ->
tenantService.getTenantDetailsById(consortiumId, tenantId));
tenantService.getTenantDetailsById(consortiumId, TENANT_ID));
}

private void mockOkapiHeaders() {
when(folioExecutionContext.getTenantId()).thenReturn("diku");
Map<String, Collection<String>> okapiHeaders = createOkapiHeaders();
when(folioExecutionContext.getOkapiHeaders()).thenReturn(okapiHeaders);
}
}
1 change: 1 addition & 0 deletions src/test/java/org/folio/consortia/utils/EntityUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public class EntityUtils {
public static final UUID ACTION_ID = UUID.fromString("dcfc317b-0d7c-4334-8656-596105fa6c99");
public static final UUID INSTANCE_ID = UUID.fromString("111841e3-e6fb-4191-8fd8-5674a5107c33");
public static final String CENTRAL_TENANT_ID = "consortium";
public static final String TENANT_ID = "diku";

public static ConsortiumEntity createConsortiumEntity(String id, String name) {
ConsortiumEntity consortiumEntity = new ConsortiumEntity();
Expand Down

0 comments on commit 71dc94d

Please sign in to comment.