From 9ff30e729dffe392dca1dba70356580266e2aef6 Mon Sep 17 00:00:00 2001 From: mibo Date: Tue, 17 Nov 2015 06:21:35 +0100 Subject: [PATCH] [OLINGO-568] Added search integration test --- .../client/SystemQueryOptionITCase.java | 42 +++++++++++++++---- .../queryoptions/options/SearchHandler.java | 3 +- 2 files changed, 35 insertions(+), 10 deletions(-) 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 4341a5390..e605836e4 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 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 response = request.execute(); + List entities = response.getBody().getEntities(); + assertEquals(1, entities.size()); + } + + @Test + public void andSearch() { + ODataEntitySetRequest request = getClient().getRetrieveRequestFactory() + .getEntitySetRequest(getClient().newURIBuilder(SERVICE_URI) + .appendEntitySetSegment(ES_ALL_PRIM) + .search("Second AND positive") + .build()); + setCookieHeader(request); + ODataRetrieveResponse response = request.execute(); + List entities = response.getBody().getEntities(); + assertEquals(0, entities.size()); + } + + @Test + public void orSearch() { + ODataEntitySetRequest request = getClient().getRetrieveRequestFactory() + .getEntitySetRequest(getClient().newURIBuilder(SERVICE_URI) + .appendEntitySetSegment(ES_ALL_PRIM) + .search("Second OR positive") + .build()); + setCookieHeader(request); + ODataRetrieveResponse response = request.execute(); + List entities = response.getBody().getEntities(); + assertEquals(2, entities.size()); } } 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 5ce4530b8..e56e08308 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()); }