mirror of
https://github.com/hapifhir/hapi-fhir.git
synced 2025-02-09 06:24:55 +00:00
Add test for fixed use case
This commit is contained in:
parent
264dfee099
commit
4e8b1719f3
@ -2,6 +2,7 @@ package ca.uhn.fhir.jpa.term;
|
|||||||
|
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||||
|
import ca.uhn.fhir.jpa.entity.TermCodeSystemVersion;
|
||||||
import ca.uhn.fhir.jpa.entity.TermConcept;
|
import ca.uhn.fhir.jpa.entity.TermConcept;
|
||||||
import ca.uhn.fhir.jpa.entity.TermConceptDesignation;
|
import ca.uhn.fhir.jpa.entity.TermConceptDesignation;
|
||||||
import ca.uhn.fhir.jpa.entity.TermConceptProperty;
|
import ca.uhn.fhir.jpa.entity.TermConceptProperty;
|
||||||
@ -31,7 +32,6 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Captor;
|
import org.mockito.Captor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -73,6 +73,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
|
|||||||
import static org.hamcrest.Matchers.contains;
|
import static org.hamcrest.Matchers.contains;
|
||||||
import static org.hamcrest.Matchers.containsString;
|
import static org.hamcrest.Matchers.containsString;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
@ -113,7 +114,6 @@ public class TerminologyLoaderSvcLoincTest extends BaseLoaderTest {
|
|||||||
private ArgumentCaptor<List<ConceptMap>> myConceptMapCaptor_268;
|
private ArgumentCaptor<List<ConceptMap>> myConceptMapCaptor_268;
|
||||||
@Captor
|
@Captor
|
||||||
private ArgumentCaptor<RequestDetails> myRequestDetailsCaptor;
|
private ArgumentCaptor<RequestDetails> myRequestDetailsCaptor;
|
||||||
|
|
||||||
private ZipCollectionBuilder myFiles;
|
private ZipCollectionBuilder myFiles;
|
||||||
@Mock
|
@Mock
|
||||||
private ITermDeferredStorageSvc myTermDeferredStorageSvc;
|
private ITermDeferredStorageSvc myTermDeferredStorageSvc;
|
||||||
@ -742,8 +742,7 @@ public class TerminologyLoaderSvcLoincTest extends BaseLoaderTest {
|
|||||||
// Actually do the load
|
// Actually do the load
|
||||||
mySvc.loadLoinc(myFiles.getFiles(), mySrd);
|
mySvc.loadLoinc(myFiles.getFiles(), mySrd);
|
||||||
|
|
||||||
verify(myTermCodeSystemStorageSvc, times(1)).storeNewCodeSystemVersion(mySystemCaptor.capture(),
|
verify(myTermCodeSystemStorageSvc, times(1)).storeNewCodeSystemVersion(mySystemCaptor.capture(), myCsvCaptor.capture(), any(RequestDetails.class), myValueSetsCaptor.capture(), myConceptMapCaptor.capture());
|
||||||
myCsvCaptor.capture(), any(RequestDetails.class), myValueSetsCaptor.capture(), myConceptMapCaptor.capture());
|
|
||||||
Map<String, TermConcept> concepts = extractConcepts();
|
Map<String, TermConcept> concepts = extractConcepts();
|
||||||
|
|
||||||
TermConcept code;
|
TermConcept code;
|
||||||
@ -842,65 +841,94 @@ public class TerminologyLoaderSvcLoincTest extends BaseLoaderTest {
|
|||||||
|
|
||||||
|
|
||||||
@Nested
|
@Nested
|
||||||
public class CurrentVersionParameter {
|
public class LoadLoincCurrentVersion {
|
||||||
private TermLoaderSvcImpl testedSvc;
|
private TermLoaderSvcImpl testedSvc;
|
||||||
private final Properties testProps = new Properties();
|
private final Properties testProps = new Properties();
|
||||||
|
|
||||||
@Mock private final LoadedFileDescriptors mockFileDescriptors = mock(LoadedFileDescriptors.class);
|
@Mock private final LoadedFileDescriptors mockFileDescriptors = mock(LoadedFileDescriptors.class);
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Mock private final List<ITermLoaderSvc.FileDescriptor> mockFileDescriptorList = mock(List.class);
|
@Mock private final List<ITermLoaderSvc.FileDescriptor> mockFileDescriptorList = mock(List.class);
|
||||||
|
@Mock private final ITermCodeSystemStorageSvc mockCodeSystemStorageSvc = mock(ITermCodeSystemStorageSvc.class);
|
||||||
|
private final RequestDetails requestDetails = new ServletRequestDetails();
|
||||||
|
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void beforeEachCurrentVersionParameterTest() {
|
void beforeEach() {
|
||||||
testedSvc = spy(mySvc);
|
testedSvc = spy(mySvc);
|
||||||
doReturn(mockFileDescriptors).when(testedSvc).getLoadedFileDescriptors(mockFileDescriptorList);
|
|
||||||
doReturn(testProps).when(testedSvc).getProperties(any(), eq(LOINC_UPLOAD_PROPERTIES_FILE.getCode()));
|
doReturn(testProps).when(testedSvc).getProperties(any(), eq(LOINC_UPLOAD_PROPERTIES_FILE.getCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLoadNoMakeCurrentVersion() {
|
public void testDontMakeCurrentVersion() throws IOException {
|
||||||
|
addLoincMandatoryFilesToZip(myFiles);
|
||||||
testProps.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), "false");
|
testProps.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), "false");
|
||||||
testProps.put(LOINC_CODESYSTEM_VERSION.getCode(), "27.0");
|
testProps.put(LOINC_CODESYSTEM_VERSION.getCode(), "27.0");
|
||||||
doReturn(mock(UploadStatistics.class)).when(testedSvc).processLoincFiles(
|
|
||||||
mockFileDescriptors, mySrd, testProps, true);
|
|
||||||
|
|
||||||
|
testedSvc.loadLoinc(myFiles.getFiles(), requestDetails);
|
||||||
|
|
||||||
testedSvc.loadLoinc(mockFileDescriptorList, mySrd);
|
verify(myTermCodeSystemStorageSvc, times(1)).storeNewCodeSystemVersion(
|
||||||
|
any(CodeSystem.class), any(TermCodeSystemVersion.class), myRequestDetailsCaptor.capture(), any(), any());
|
||||||
|
|
||||||
|
myRequestDetailsCaptor.getAllValues().forEach( rd ->
|
||||||
Mockito.verify(testedSvc, times(1)).processLoincFiles(any(), any(), any(), eq(true));
|
assertFalse(rd.getUserData() == null ||
|
||||||
|
(boolean) requestDetails.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNoMakeCurrentParameterDefaultsToTrueAndCallsSetVersion() {
|
public void testMakeCurrentVersionPropertySet() {
|
||||||
ArgumentCaptor<Boolean> closeFilesArgCaptor = ArgumentCaptor.forClass(Boolean.class);
|
testProps.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), "true");
|
||||||
ArgumentCaptor<Boolean> makeCurrentVersionArgCaptor = ArgumentCaptor.forClass(boolean.class);
|
|
||||||
|
|
||||||
testProps.put(LOINC_CODESYSTEM_VERSION.getCode(), "27.0");
|
testProps.put(LOINC_CODESYSTEM_VERSION.getCode(), "27.0");
|
||||||
|
doReturn(mockFileDescriptors).when(testedSvc).getLoadedFileDescriptors(mockFileDescriptorList);
|
||||||
doReturn(mock(UploadStatistics.class)).when(testedSvc).processLoincFiles(
|
doReturn(mock(UploadStatistics.class)).when(testedSvc).processLoincFiles(
|
||||||
eq(mockFileDescriptors), any(RequestDetails.class), eq(testProps), any());
|
eq(mockFileDescriptors), eq(requestDetails), eq(testProps), any());
|
||||||
|
|
||||||
|
testedSvc.loadLoinc(mockFileDescriptorList, requestDetails);
|
||||||
|
|
||||||
|
boolean isMakeCurrent = requestDetails.getUserData() == null ||
|
||||||
|
(boolean) requestDetails.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE);
|
||||||
|
assertTrue(isMakeCurrent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
testedSvc.loadLoinc(mockFileDescriptorList, new ServletRequestDetails());
|
@Test
|
||||||
|
public void testMakeCurrentVersionByDefaultPropertySet() {
|
||||||
|
testProps.put(LOINC_CODESYSTEM_VERSION.getCode(), "27.0");
|
||||||
|
doReturn(mockFileDescriptors).when(testedSvc).getLoadedFileDescriptors(mockFileDescriptorList);
|
||||||
|
doReturn(mock(UploadStatistics.class)).when(testedSvc).processLoincFiles(
|
||||||
|
eq(mockFileDescriptors), eq(requestDetails), eq(testProps), any());
|
||||||
|
|
||||||
|
testedSvc.loadLoinc(mockFileDescriptorList, requestDetails);
|
||||||
|
|
||||||
|
boolean isMakeCurrent = requestDetails.getUserData() == null ||
|
||||||
|
(boolean) requestDetails.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE);
|
||||||
|
assertTrue(isMakeCurrent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Mockito.verify(testedSvc, times(2)).processLoincFiles(
|
@Test
|
||||||
any(), myRequestDetailsCaptor.capture(), any(), any());
|
public void testDontMakeCurrentVersionPropertySet() {
|
||||||
|
testProps.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), "false");
|
||||||
|
testProps.put(LOINC_CODESYSTEM_VERSION.getCode(), "27.0");
|
||||||
|
doReturn(mockFileDescriptors).when(testedSvc).getLoadedFileDescriptors(mockFileDescriptorList);
|
||||||
|
doReturn(mock(UploadStatistics.class)).when(testedSvc).processLoincFiles(
|
||||||
|
eq(mockFileDescriptors), eq(requestDetails), eq(testProps), any());
|
||||||
|
|
||||||
// ask no closing files in first call and closing in second
|
testedSvc.loadLoinc(mockFileDescriptorList, requestDetails);
|
||||||
assertEquals(true, myRequestDetailsCaptor.getAllValues().get(0)
|
|
||||||
.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE));
|
boolean isMakeCurrent = requestDetails.getUserData() == null ||
|
||||||
assertEquals(true, myRequestDetailsCaptor.getAllValues().get(1)
|
(boolean) requestDetails.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE);
|
||||||
.getUserData().getOrDefault(MAKE_LOADING_VERSION_CURRENT, Boolean.TRUE));
|
assertFalse(isMakeCurrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNoVersionAndNoMakeCurrentThrows() {
|
public void testNoVersionAndNoMakeCurrentThrows() {
|
||||||
testProps.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), "false");
|
testProps.put(LOINC_CODESYSTEM_MAKE_CURRENT.getCode(), "false");
|
||||||
|
doReturn(mockFileDescriptors).when(testedSvc).getLoadedFileDescriptors(mockFileDescriptorList);
|
||||||
|
|
||||||
InvalidRequestException thrown = Assertions.assertThrows(InvalidRequestException.class,
|
InvalidRequestException thrown = Assertions.assertThrows(InvalidRequestException.class,
|
||||||
() -> testedSvc.loadLoinc(mockFileDescriptorList, mySrd) );
|
() -> testedSvc.loadLoinc(mockFileDescriptorList, mySrd) );
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user