package io.robe.common.service.search; import io.robe.common.service.search.model.SearchModel; import org.junit.Test; import org.glassfish.jersey.server.model.Parameter; import org.mockito.Mockito; import static org.junit.Assert.*; public class SearchFactoryProviderTest { private Parameter getParameter(String methodName, Class clazz) throws NoSuchMethodException { return Parameter.create( clazz, SampleResource.class, SampleResource.class.getDeclaredMethod(methodName, clazz), true ).get(0); } @Test public void createValueFactory() throws Exception { Parameter parameter = getParameter("test1", SearchModel.class); SearchFactoryProvider provider = Mockito.mock(SearchFactoryProvider.class); Mockito.when(provider.createValueFactory(parameter)).thenCallRealMethod(); SearchFactory factory = (SearchFactory) provider.createValueFactory(parameter); assertNotNull(factory); } @Test public void createValueFactoryWithoutAnnotation() throws Exception { Parameter parameter = getParameter("test2", SearchModel.class); SearchFactoryProvider provider = Mockito.mock(SearchFactoryProvider.class); Mockito.when(provider.createValueFactory(parameter)).thenCallRealMethod(); SearchFactory factory = (SearchFactory) provider.createValueFactory(parameter); assertNull(factory); } @Test public void createValueFactoryWrongType() throws Exception { Parameter parameter = getParameter("test3", String.class); SearchFactoryProvider provider = Mockito.mock(SearchFactoryProvider.class); Mockito.when(provider.createValueFactory(parameter)).thenCallRealMethod(); SearchFactory factory = (SearchFactory) provider.createValueFactory(parameter); assertNull(factory); } private class SampleResource { public String test1(@SearchParam SearchModel model) { return "OK"; } public String test2(SearchModel model) { return "OK"; } public String test3(@SearchParam String text) { return "OK"; } } }