private void initializeSearchHandlers() { if (searchHandlersByIds != null) { return; } Map<CompositeSearchHandlerKeyValue, SearchHandler> tempSearchHandlersByIds = new HashMap<CompositeSearchHandlerKeyValue, SearchHandler>(); Map<CompositeSearchHandlerKeyValue, Set<SearchHandler>> tempSearchHandlersByParameters = new HashMap<CompositeSearchHandlerKeyValue, Set<SearchHandler>>(); Map<String, Set<SearchHandler>> tempSearchHandlersByResource = new HashMap<String, Set<SearchHandler>>(); List<SearchHandler> allSearchHandlers = restHelperService.getRegisteredSearchHandlers(); for (SearchHandler searchHandler : allSearchHandlers) { addSearchHandler(tempSearchHandlersByIds, tempSearchHandlersByParameters, tempSearchHandlersByResource, searchHandler); } this.allSearchHandlers = allSearchHandlers; searchHandlersByParameter = tempSearchHandlersByParameters; searchHandlersByIds = tempSearchHandlersByIds; searchHandlersByResource = tempSearchHandlersByResource; }
/** * @verifies return search handler matching id set in given parameters * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnSearchHandlerMatchingIdSetInGivenParameters() throws Exception { SearchHandler searchHandler = mock(SearchHandler.class); SearchConfig searchConfig = new SearchConfig("conceptByMapping", "v1/concept", "1.8.*", new SearchQuery.Builder( "Fuzzy search").withRequiredParameters("q").build()); when(searchHandler.getSearchConfig()).thenReturn(searchConfig); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler)); setCurrentOpenmrsVersion("1.8.10"); Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("s", new String[] { "conceptByMapping" }); assertThat(restService.getSearchHandler("v1/concept", parameters), is(searchHandler)); }
/** * @verifies return null if parameters do not contain a search handler id and no other non * special request parameters * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnNullIfParametersDoNotContainASearchHandlerIdAndNoOtherNonSpecialRequestParameters() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder("description").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call Map<String, String[]> parameters = new HashMap<String, String[]>(); assertThat(restService.getSearchHandler("v1/concept", parameters), is(nullValue())); }
/** * @verifies return null if no search handler is found for given resource name * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnNullIfNoSearchHandlerIsFoundForGivenResourceName() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("source", new String[] { "some source" }); assertThat(restService.getSearchHandler("v1/order", parameters), is(nullValue())); }
/** * @verifies return null if no search handler is found for current openmrs version * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldReturnNullIfNoSearchHandlerIsFoundForCurrentOpenmrsVersion() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.12.0"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("source", new String[] { "some source" }); assertThat(restService.getSearchHandler("v1/concept", parameters), is(nullValue())); }
/** * @verifies return null if no search handler is found for given resource name * @see RestServiceImpl#getSearchHandlers(String) */ @Test public void getSearchHandlers_shouldReturnNullIfNoSearchHandlerIsFoundForGivenResourceName() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call assertThat(restService.getSearchHandlers("v1/order"), is(nullValue())); }
/** * @verifies initialize resources and search handlers * @see RestServiceImpl#initialize() */ @Test public void initialize_shouldInitializeResourcesAndSearchHandlers() throws Exception { List<Class<? extends Resource>> resources = new ArrayList<Class<? extends Resource>>(); resources.add(AnimalResource_1_9.class); when(openmrsClassScanner.getClasses(Resource.class, true)).thenReturn(resources); SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.9.*", new SearchQuery.Builder( "Search for concepts").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); setCurrentOpenmrsVersion("1.9.10"); RestUtil.disableContext(); //to avoid a Context call restService.initialize(); assertThat(restService.getSearchHandlers("v1/concept").size(), is(1)); assertThat(restService.getSearchHandlers("v1/concept").iterator().next(), is(searchHandler1)); assertThat(restService.getResourceByName("v1/animal"), instanceOf(AnimalResource_1_9.class)); }
/** * @verifies return null if no search handler is found for current openmrs version * @see RestServiceImpl#getSearchHandlers(String) */ @Test public void getSearchHandlers_shouldReturnNullIfNoSearchHandlerIsFoundForCurrentOpenmrsVersion() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); setCurrentOpenmrsVersion("1.12.0"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); RestUtil.disableContext(); //to avoid a Context call assertThat(restService.getSearchHandlers("v1/concept"), is(nullValue())); }
/** * @verifies fail if parameters contain a search handler id which cannot be found * @see RestServiceImpl#getSearchHandler(String, Map) */ @Test public void getSearchHandler_shouldFailIfParametersContainASearchHandlerIdWhichCannotBeFound() throws Exception { SearchHandler searchHandler = mock(SearchHandler.class); SearchConfig searchConfig = new SearchConfig("default", "v1/concept", "1.8.*", new SearchQuery.Builder( "Fuzzy search").withRequiredParameters("q").build()); when(searchHandler.getSearchConfig()).thenReturn(searchConfig); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler)); setCurrentOpenmrsVersion("1.8.10"); String searchHandlerId = "conceptByMapping"; Map<String, String[]> parameters = new HashMap<String, String[]>(); parameters.put("s", new String[] { searchHandlerId }); expectedException.expect(InvalidSearchException.class); expectedException.expectMessage("The search with id '" + searchHandlerId + "' for '" + searchConfig.getSupportedResource() + "' resource is not recognized"); restService.getSearchHandler("v1/concept", parameters); }
when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2));
when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2));
when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2));
"Search for concepts").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1)); "Search for orders by patient").withRequiredParameters("patient").build()); when(searchHandler2.getSearchConfig()).thenReturn(searchConfig2); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2));
when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2));
when(restHelperService.getRegisteredSearchHandlers()).thenReturn( asList(searchHandler1, searchHandler2, searchHandler3, searchHandler4));
when(restHelperService.getRegisteredSearchHandlers()).thenReturn( asList(searchHandler1, searchHandler2, searchHandler3, searchHandler4));
when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2));
/** * @verifies fail if two search handlers for the same resource have the same id * @see RestServiceImpl#getSearchHandlers(String) */ @Test public void getSearchHandlers_shouldFailIfTwoSearchHandlersForTheSameResourceHaveTheSameId() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("conceptByMapping", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); SearchHandler searchHandler2 = mock(SearchHandler.class); SearchConfig searchConfig2 = new SearchConfig("conceptByMapping", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler2.getSearchConfig()).thenReturn(searchConfig2); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2)); RestUtil.disableContext(); //to avoid a Context call expectedException.expect(IllegalStateException.class); expectedException.expectMessage(startsWith("Two search handlers (")); expectedException .expectMessage(endsWith("for the same resource (v1/concept) must not have the same ID (conceptByMapping)")); restService.getSearchHandlers("v1/concept"); }
/** * @verifies fail if two search handlers for the same resource have the same id * @see RestServiceImpl#initialize() */ @Test public void initialize_shouldFailIfTwoSearchHandlersForTheSameResourceHaveTheSameId() throws Exception { SearchHandler searchHandler1 = mock(SearchHandler.class); SearchConfig searchConfig1 = new SearchConfig("conceptByMapping", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler1.getSearchConfig()).thenReturn(searchConfig1); SearchHandler searchHandler2 = mock(SearchHandler.class); SearchConfig searchConfig2 = new SearchConfig("conceptByMapping", "v1/concept", "1.8.*", new SearchQuery.Builder( "description").withRequiredParameters("source").withOptionalParameters("code").build()); when(searchHandler2.getSearchConfig()).thenReturn(searchConfig2); setCurrentOpenmrsVersion("1.8.10"); when(restHelperService.getRegisteredSearchHandlers()).thenReturn(asList(searchHandler1, searchHandler2)); RestUtil.disableContext(); //to avoid a Context call expectedException.expect(IllegalStateException.class); expectedException.expectMessage(startsWith("Two search handlers (")); expectedException .expectMessage(endsWith("for the same resource (v1/concept) must not have the same ID (conceptByMapping)")); restService.initialize(); } }