Testing Part 2
This commit is contained in:
parent
f9561f2685
commit
6416ccce36
|
@ -6,8 +6,12 @@ import org.checkerframework.checker.units.qual.C;
|
|||
import org.hl7.fhir.r5.model.CodeableConcept;
|
||||
import org.hl7.fhir.r5.model.Coding;
|
||||
import org.hl7.fhir.r5.model.ValueSet;
|
||||
import org.hl7.fhir.r5.terminologies.ValueSetExpander;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.Files;
|
||||
|
@ -16,6 +20,7 @@ import java.nio.file.Paths;
|
|||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
public class TerminologyCacheTests {
|
||||
|
||||
|
@ -27,9 +32,71 @@ public class TerminologyCacheTests {
|
|||
return jsonParser.parse(stringValue);
|
||||
};
|
||||
|
||||
public Path createTempCacheDirectory() throws IOException {
|
||||
Path tmp = Files.createTempDirectory("integrationTestCache");
|
||||
tmp.toFile().deleteOnExit();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
public void deleteTempCacheDirectory(Path path) {
|
||||
File directory = new File(path.toUri());
|
||||
for (File file : directory.listFiles()) {
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCachePersistence() throws IOException, URISyntaxException {
|
||||
Object lock = new Object();
|
||||
Path tempCacheDirectory = createTempCacheDirectory();
|
||||
ValueSet valueSet = new ValueSet();
|
||||
valueSet.setUrl("dummyValueSetURL");
|
||||
|
||||
Coding coding = new Coding();
|
||||
coding.setCode("dummyCode");
|
||||
|
||||
// Add dummy results to the cache
|
||||
TerminologyCache terminologyCacheA = new TerminologyCache(lock, tempCacheDirectory.toString());
|
||||
|
||||
IWorkerContext.ValidationResult validationResultA = new IWorkerContext.ValidationResult(ValidationMessage.IssueSeverity.INFORMATION, "dummyInfo");
|
||||
TerminologyCache.CacheToken codingTokenA = terminologyCacheA.generateValidationToken(CacheTestUtils.validationOptions,
|
||||
coding, valueSet);
|
||||
terminologyCacheA.cacheValidation(codingTokenA, validationResultA, true);
|
||||
|
||||
TerminologyCache.CacheToken expansionTokenA = terminologyCacheA.generateExpandToken(valueSet, true);
|
||||
ValueSetExpander.ValueSetExpansionOutcome expansionOutcomeA = new ValueSetExpander.ValueSetExpansionOutcome(valueSet);
|
||||
|
||||
terminologyCacheA.cacheExpansion(expansionTokenA, expansionOutcomeA, true);
|
||||
// Check that the in-memory cache is returning what we put in
|
||||
{
|
||||
assertValidationResultEquals(validationResultA, terminologyCacheA.getValidation(codingTokenA));
|
||||
assertExpansionOutcomeEquals(expansionOutcomeA,terminologyCacheA.getExpansion(expansionTokenA));
|
||||
}
|
||||
|
||||
//Create another cache using the same directory, and check that it gives the same results.
|
||||
{
|
||||
TerminologyCache terminologyCacheB = new TerminologyCache(lock, tempCacheDirectory.toString());
|
||||
|
||||
assertValidationResultEquals(validationResultA, terminologyCacheB.getValidation(terminologyCacheA.generateValidationToken(CacheTestUtils.validationOptions,
|
||||
coding, valueSet)));
|
||||
assertExpansionOutcomeEquals(expansionOutcomeA,terminologyCacheB.getExpansion(terminologyCacheA.generateExpandToken(valueSet, true)));
|
||||
}
|
||||
deleteTempCacheDirectory(tempCacheDirectory);
|
||||
}
|
||||
|
||||
private void assertValidationResultEquals(IWorkerContext.ValidationResult a, IWorkerContext.ValidationResult b) {
|
||||
assertEquals(a.getSeverity(), b.getSeverity());
|
||||
assertEquals(a.getMessage(), b.getMessage());
|
||||
}
|
||||
|
||||
private void assertExpansionOutcomeEquals(ValueSetExpander.ValueSetExpansionOutcome a, ValueSetExpander.ValueSetExpansionOutcome b) {
|
||||
assertEquals(a.getValueset().getUrl(), b.getValueset().getUrl());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCodingCacheTokenGeneration() throws IOException, URISyntaxException {
|
||||
Object lock = new Object();
|
||||
|
||||
TerminologyCache terminologyCache = new TerminologyCache(lock, null);
|
||||
ValueSet valueSet = new ValueSet();
|
||||
|
||||
|
@ -42,6 +109,7 @@ public class TerminologyCacheTests {
|
|||
JsonElement expected = getJsonFromFile("codingEmptyValueSet.json");
|
||||
|
||||
assertEquals(expected, actual);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue