Fix fluent client search call so that it can be mocked with Mockito
This commit is contained in:
parent
43dd081098
commit
c838d651dd
|
@ -78,6 +78,11 @@
|
|||
<version>${commons_io_version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
<version>${commons_codec_version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Android does not come with the Servlet API bundled, and MethodUtil
|
||||
requires it -->
|
||||
|
@ -153,17 +158,21 @@
|
|||
<shadedClassifierName>dstu</shadedClassifierName>
|
||||
<artifactSet>
|
||||
<includes>
|
||||
<!--
|
||||
<include>commons-codec:commons-codec</include>
|
||||
-->
|
||||
<include>ca.uhn.hapi.fhir:hapi-fhir-base</include>
|
||||
<include>ca.uhn.hapi.fhir:hapi-fhir-structures-dstu</include>
|
||||
<include>org.glassfish:javax.json</include>
|
||||
<include>org.codehaus.woodstox:woodstox-core-asl</include>
|
||||
<include>javax.xml.stream:stax-api</include>
|
||||
<include>javax.servlet:javax.servlet-api</include>
|
||||
<!-- <include>javax.servlet:javax.servlet-api</include>-->
|
||||
<include>org.codehaus.woodstox:stax2-api</include>
|
||||
<!-- <include>org.slf4j:slf4j*</include> -->
|
||||
<!--
|
||||
<include>org.apache.commons:*</include>
|
||||
<include>org.apache.httpcomponents:*</include>
|
||||
-->
|
||||
<include>org.glassfish:javax.json</include>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
|
@ -201,16 +210,20 @@
|
|||
<shadedClassifierName>dstu2</shadedClassifierName>
|
||||
<artifactSet>
|
||||
<includes>
|
||||
<!--
|
||||
<include>commons-codec:commons-codec</include>
|
||||
-->
|
||||
<include>ca.uhn.hapi.fhir:hapi-fhir-base</include>
|
||||
<include>ca.uhn.hapi.fhir:hapi-fhir-structures-dstu2</include>
|
||||
<include>org.glassfish:javax.json</include>
|
||||
<include>org.codehaus.woodstox:woodstox-core-asl</include>
|
||||
<include>javax.xml.stream:stax-api</include>
|
||||
<include>javax.servlet:javax.servlet-api</include>
|
||||
<!-- <include>javax.servlet:javax.servlet-api</include>-->
|
||||
<include>org.codehaus.woodstox:stax2-api</include>
|
||||
<!--
|
||||
<include>org.apache.commons:*</include>
|
||||
<include>org.apache.httpcomponents:*</include>
|
||||
-->
|
||||
<include>org.glassfish:javax.json</include>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
|
|
|
@ -20,7 +20,7 @@ package ca.uhn.fhir.rest.gclient;
|
|||
* #L%
|
||||
*/
|
||||
|
||||
public interface IBaseQuery<T> {
|
||||
public interface IBaseQuery<T extends IBaseQuery<?>> {
|
||||
|
||||
T where(ICriterion<?> theCriterion);
|
||||
|
||||
|
|
|
@ -75,5 +75,19 @@ public interface IQuery<T> extends IClientExecutable<IQuery<T>, T>, IBaseQuery<I
|
|||
* or <code>ca.uhn.fhir.model.dstu2.resource.Bundle.class</code>
|
||||
*/
|
||||
<B extends IBaseBundle> IQuery<B> returnBundle(Class<B> theClass);
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
// This is here as an overridden method to allow mocking clients with Mockito to work
|
||||
@Override
|
||||
IQuery<T> where(ICriterion<?> theCriterion);
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
// This is here as an overridden method to allow mocking clients with Mockito to work
|
||||
@Override
|
||||
IQuery<T> and(ICriterion<?> theCriterion);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
package ca.uhn.fhir.rest.client;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import org.hl7.fhir.instance.model.api.IBaseBundle;
|
||||
import org.junit.Test;
|
||||
import org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs;
|
||||
import org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls;
|
||||
|
||||
import ca.uhn.fhir.model.dstu2.resource.Bundle;
|
||||
import ca.uhn.fhir.model.dstu2.resource.Condition;
|
||||
import ca.uhn.fhir.rest.gclient.ICriterion;
|
||||
import ca.uhn.fhir.rest.gclient.IQuery;
|
||||
|
||||
public class ClientMockingTest {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void testMockingDeepStubs() {
|
||||
|
||||
IGenericClient client = mock(IGenericClient.class, new ReturnsDeepStubs());
|
||||
|
||||
// System.out.println(stub.getClass());
|
||||
// System.out.println(stub.getClass());
|
||||
|
||||
Bundle retVal = new Bundle();
|
||||
|
||||
//@formatter:off
|
||||
when((Object)client
|
||||
.search()
|
||||
.forResource(eq(Condition.class))
|
||||
.where(any(ICriterion.class))
|
||||
.returnBundle((Class<IBaseBundle>)any())
|
||||
.execute())
|
||||
.thenReturn(retVal);
|
||||
//@formatter:off
|
||||
|
||||
Bundle actual = client.search().forResource(Condition.class).where(Condition.ASSERTER.hasId("123")).returnBundle(Bundle.class).execute();
|
||||
assertSame(retVal, actual);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue