Skip to content

Commit

Permalink
[SELC-5319] Retrieve Institution Id when create institution (#420)
Browse files Browse the repository at this point in the history
  • Loading branch information
andrea-putzu authored Jul 24, 2024
1 parent 5f3fcf7 commit e580a53
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -116,28 +116,35 @@ public CompletionServiceDefault(ProductService productService,

@Override
public String createInstitutionAndPersistInstitutionId(Onboarding onboarding) {
InstitutionResponse institutionResponse;
//When onboarding a pg institution this condition ensures that the institution's informations are persisted correctly
if(forceInstitutionCreation){
institutionResponse = createInstitution(onboarding.getInstitution());
}else {
Institution institution = onboarding.getInstitution();
InstitutionsResponse institutionsResponse = getInstitutions(institution);
if (Objects.nonNull(institutionsResponse.getInstitutions()) && institutionsResponse.getInstitutions().size() > 1) {
throw new GenericOnboardingException("List of institutions is ambiguous, it is empty or has more than one element!!");
}

institutionResponse =
Objects.isNull(institutionsResponse.getInstitutions()) || institutionsResponse.getInstitutions().isEmpty()
? createInstitution(institution)
: institutionsResponse.getInstitutions().get(0);
InstitutionResponse institutionResponse = createOrRetrieveInstitution(onboarding);

if (Objects.nonNull(institutionResponse)) {
onboardingRepository
.update("institution.id = ?1 and updatedAt = ?2 ", institutionResponse.getId(), LocalDateTime.now())
.where("_id", onboarding.getId());
return institutionResponse.getId();
}

throw new GenericOnboardingException("Error when create institutions!");
}

public InstitutionResponse createOrRetrieveInstitution(Onboarding onboarding) {
if (forceInstitutionCreation) {
//When onboarding a pg institution this condition ensures that the institution's informations are persisted correctly
return createInstitution(onboarding.getInstitution());
}
return institutionResponse.getId();

Institution institution = onboarding.getInstitution();
InstitutionsResponse institutionsResponse = getInstitutions(institution);

if (Objects.nonNull(institutionsResponse.getInstitutions()) && institutionsResponse.getInstitutions().size() > 1) {
throw new GenericOnboardingException("List of institutions is ambiguous, it is empty or has more than one element!!");
}

return
Objects.isNull(institutionsResponse.getInstitutions()) || institutionsResponse.getInstitutions().isEmpty()
? createInstitution(institution)
: institutionsResponse.getInstitutions().get(0);
}

private InstitutionsResponse getInstitutions(Institution institution) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.openapi.quarkus.user_registry_json.model.UserResource;
import org.openapi.quarkus.user_registry_json.model.WorkContactResource;

import java.lang.reflect.Field;
import java.time.LocalDateTime;
import java.util.*;
import java.util.logging.Logger;
Expand Down Expand Up @@ -120,6 +121,46 @@ void createInstitutionAndPersistInstitutionId_foundInstitution() {
mockOnboardingUpdateAndExecuteCreateInstitution(onboarding);
}

@Test
void createOrRetrieveInstitutionSuccess() {
Onboarding onboarding = createOnboarding();
Institution institution = new Institution();
institution.setId("actual-id");
institution.setTaxCode("123");
onboarding.setInstitution(institution);

InstitutionsResponse response = new InstitutionsResponse();
InstitutionResponse institutionResponse = new InstitutionResponse();
institutionResponse.setId("actual-id");
response.setInstitutions(List.of(institutionResponse));

when(institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), null, null, null))
.thenReturn(response);

InstitutionResponse serviceResponse = completionServiceDefault.createOrRetrieveInstitution(onboarding);

assertNotNull(serviceResponse);
assertEquals(serviceResponse.getId(), "actual-id");
}

@Test
void createOrRetrieveInstitutionFailure() {
Onboarding onboarding = createOnboarding();
Institution institution = new Institution();
institution.setId("actual-id");
institution.setTaxCode("123");
onboarding.setInstitution(institution);

InstitutionsResponse response = new InstitutionsResponse();
InstitutionResponse institutionResponse = new InstitutionResponse();
response.setInstitutions(List.of(institutionResponse, institutionResponse));

when(institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), null, null, null))
.thenReturn(response);

assertThrows(GenericOnboardingException.class, () -> completionServiceDefault.createOrRetrieveInstitution(onboarding));
}

void mockOnboardingUpdateAndExecuteCreateInstitution(Onboarding onboarding){
PanacheUpdate panacheUpdateMock = mock(PanacheUpdate.class);
when(panacheUpdateMock.where("_id", onboarding.getId()))
Expand All @@ -133,6 +174,22 @@ void mockOnboardingUpdateAndExecuteCreateInstitution(Onboarding onboarding){
.update("institution.id = ?1 and updatedAt = ?2 ", any(), any());
}

@Test
void persistUpadatedAt(){
Onboarding onboarding = createOnboarding();

PanacheUpdate panacheUpdateMock = mock(PanacheUpdate.class);
when(panacheUpdateMock.where("_id", onboarding.getId()))
.thenReturn(Long.valueOf(1));
when(onboardingRepository.update("activatedAt.id = ?1 and updatedAt = ?2 ", any(), any()))
.thenReturn(panacheUpdateMock);

completionServiceDefault.persistActivatedAt(onboarding);

verify(onboardingRepository, times(1))
.update("activatedAt = ?1 and updatedAt = ?2 ", any(), any());
}

@Test
void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreateSaAnac() {
Onboarding onboarding = createOnboarding();
Expand Down

0 comments on commit e580a53

Please sign in to comment.