Repository: olingo-odata4 Updated Branches: refs/heads/OLINGO-568_SearchParser_Draft 21e115b6b -> 9ff30e729
[OLINGO-568] Added search integration test Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/9ff30e72 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/9ff30e72 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/9ff30e72 Branch: refs/heads/OLINGO-568_SearchParser_Draft Commit: 9ff30e729dffe392dca1dba70356580266e2aef6 Parents: 21e115b Author: mibo <[email protected]> Authored: Tue Nov 17 06:21:35 2015 +0100 Committer: mibo <[email protected]> Committed: Tue Nov 17 06:30:23 2015 +0100 ---------------------------------------------------------------------- .../tecsvc/client/SystemQueryOptionITCase.java | 42 +++++++++++++++----- .../queryoptions/options/SearchHandler.java | 3 +- 2 files changed, 35 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9ff30e72/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/SystemQueryOptionITCase.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/SystemQueryOptionITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/SystemQueryOptionITCase.java index 4341a53..e605836 100644 --- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/SystemQueryOptionITCase.java +++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/SystemQueryOptionITCase.java @@ -21,10 +21,11 @@ package org.apache.olingo.fit.tecsvc.client; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; +import java.io.IOException; import java.net.URI; +import java.util.List; import org.apache.olingo.client.api.communication.ODataClientErrorException; -import org.apache.olingo.client.api.communication.ODataServerErrorException; import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest; import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse; import org.apache.olingo.client.api.domain.ClientEntity; @@ -301,18 +302,41 @@ public class SystemQueryOptionITCase extends AbstractParamTecSvcITCase { } @Test - public void negativeSearch() { + public void basicSearch() { ODataEntitySetRequest<ClientEntitySet> request = getClient().getRetrieveRequestFactory() .getEntitySetRequest(getClient().newURIBuilder(SERVICE_URI) .appendEntitySetSegment(ES_ALL_PRIM) - .search("ABC") + .search("Second") .build()); setCookieHeader(request); - try { - request.execute(); - fail(); - } catch (ODataServerErrorException e) { - assertEquals("HTTP/1.1 501 Not Implemented", e.getMessage()); - } + ODataRetrieveResponse<ClientEntitySet> response = request.execute(); + List<ClientEntity> entities = response.getBody().getEntities(); + assertEquals(1, entities.size()); + } + + @Test + public void andSearch() { + ODataEntitySetRequest<ClientEntitySet> request = getClient().getRetrieveRequestFactory() + .getEntitySetRequest(getClient().newURIBuilder(SERVICE_URI) + .appendEntitySetSegment(ES_ALL_PRIM) + .search("Second AND positive") + .build()); + setCookieHeader(request); + ODataRetrieveResponse<ClientEntitySet> response = request.execute(); + List<ClientEntity> entities = response.getBody().getEntities(); + assertEquals(0, entities.size()); + } + + @Test + public void orSearch() { + ODataEntitySetRequest<ClientEntitySet> request = getClient().getRetrieveRequestFactory() + .getEntitySetRequest(getClient().newURIBuilder(SERVICE_URI) + .appendEntitySetSegment(ES_ALL_PRIM) + .search("Second OR positive") + .build()); + setCookieHeader(request); + ODataRetrieveResponse<ClientEntitySet> response = request.execute(); + List<ClientEntity> entities = response.getBody().getEntities(); + assertEquals(2, entities.size()); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/9ff30e72/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/SearchHandler.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/SearchHandler.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/SearchHandler.java index 5ce4530..e56e083 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/SearchHandler.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/queryoptions/options/SearchHandler.java @@ -58,7 +58,8 @@ public class SearchHandler { } private static boolean isTrue(SearchTerm term, Property property) { - if(property.isPrimitive()) { + if(property.isPrimitive() && !property.isNull()) { + // TODO: mibo(151117): pass EDM information to do correct 'string' convertation String propertyString = property.asPrimitive().toString(); return propertyString != null && propertyString.contains(term.getSearchTerm()); }
