Merge pull request #751 from hapifhir/dotasek-fix-fhirpath-replacefunc-params
Fix FHIRPathEngine funcReplace parameters
This commit is contained in:
commit
153f5d657c
|
@ -2219,7 +2219,7 @@ public class FHIRPathEngine {
|
|||
|
||||
if (!Utilities.noString(f)) {
|
||||
|
||||
if (exp.getParameters().size() != 2) {
|
||||
if (exp.getParameters().size() == 2) {
|
||||
|
||||
String t = convertToString(execute(context, focus, exp.getParameters().get(0), true));
|
||||
String r = convertToString(execute(context, focus, exp.getParameters().get(1), true));
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
package org.hl7.fhir.dstu3.utils;
|
||||
|
||||
import org.hl7.fhir.dstu3.context.IWorkerContext;
|
||||
import org.hl7.fhir.dstu3.model.Base;
|
||||
import org.hl7.fhir.dstu3.model.ExpressionNode;
|
||||
import org.hl7.fhir.dstu3.model.StringType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.times;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class FhirPathTests {
|
||||
|
||||
@Mock
|
||||
IWorkerContext iWorkerContext;
|
||||
|
||||
@Mock
|
||||
Object appContext;
|
||||
|
||||
@Mock
|
||||
Base resource;
|
||||
|
||||
@Mock
|
||||
Base base;
|
||||
|
||||
@Test
|
||||
public void testFuncReplaceParamSize() {
|
||||
FHIRPathEngine engine = Mockito.spy(new FHIRPathEngine(iWorkerContext));
|
||||
|
||||
ExpressionNode expressionNode = new ExpressionNode(0);
|
||||
expressionNode.setKind(ExpressionNode.Kind.Function);
|
||||
expressionNode.setFunction(ExpressionNode.Function.Replace);
|
||||
|
||||
ExpressionNode expressionNodeB = new ExpressionNode(1);
|
||||
expressionNodeB.setKind(ExpressionNode.Kind.Function);
|
||||
expressionNodeB.setFunction(ExpressionNode.Function.Empty);
|
||||
|
||||
ExpressionNode expressionNodeC = new ExpressionNode(2);
|
||||
expressionNodeC.setKind(ExpressionNode.Kind.Function);
|
||||
expressionNodeC.setFunction(ExpressionNode.Function.Empty);
|
||||
|
||||
expressionNode.getParameters().add(expressionNodeB);
|
||||
expressionNode.getParameters().add(expressionNodeC);
|
||||
List<Base> result = engine.evaluate(appContext, resource, base, expressionNode);
|
||||
|
||||
assertEquals(1, result.size());
|
||||
Base onlyResult = result.get(0);
|
||||
assertTrue(onlyResult instanceof StringType);
|
||||
assertEquals("base", ((StringType)result.get(0)).asStringValue());
|
||||
Mockito.verify(engine, times(2)).convertToString(any());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue