package org.jboss.test.capedwarf.datastore.test; import java.util.Arrays; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Query; import org.jboss.arquillian.junit.Arquillian; import org.jboss.test.capedwarf.common.support.All; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import static com.google.appengine.api.datastore.Query.FilterOperator.EQUAL; import static com.google.appengine.api.datastore.Query.FilterOperator.IN; import static org.junit.Assert.assertThat; /** * Datastore querying tests. * * @author <a href="mailto:marko.luksa@gmail.com">Marko Luksa</a> */ @RunWith(Arquillian.class) @Category(All.class) public class QueryFilteringByStringPropertyTypeTest extends QueryTestBase { @Test public void queryByEqualReturnsEntityWithEqualPropertyValue() throws Exception { testEqualityQueries("foo", "bar"); testInequalityQueries("aaa", "bbb", "ccc"); } @Test public void queryDoesNotReturnResultIfFilterIsSubstringOfProperty() throws Exception { storeTestEntityWithSingleProperty("John Doe"); Query query = createQuery(EQUAL, "John"); assertNoResults(query); } @Test public void testQueryByIn() throws Exception { Entity john = storeTestEntityWithSingleProperty("John"); Entity kate = storeTestEntityWithSingleProperty("Kate"); Entity ashley = storeTestEntityWithSingleProperty("Ashley"); assertSet(whenFilteringBy(IN, Arrays.asList("Kate", "Ashley")), queryReturns(kate, ashley)); } @Test public void testOrderOfReturnedResultsIsSameAsOrderOfElementsInInStatement() throws Exception { Entity a = storeTestEntityWithSingleProperty("a"); Entity b = storeTestEntityWithSingleProperty("b"); Entity c = storeTestEntityWithSingleProperty("c"); Entity n = storeTestEntityWithSingleProperty(null); assertList(listReturnedWhenFilteringBy(IN, Arrays.asList("a", "b")), containsResultsInOrder(a, b)); assertList(listReturnedWhenFilteringBy(IN, Arrays.asList("b", "a")), containsResultsInOrder(b, a)); assertList(listReturnedWhenFilteringBy(IN, Arrays.asList("c", "a", "b")), containsResultsInOrder(c, a, b)); assertList(listReturnedWhenFilteringBy(IN, Arrays.asList("b", "c", "c", "b")), containsResultsInOrder(b, c)); assertList(listReturnedWhenFilteringBy(IN, Arrays.asList(null, "b")), containsResultsInOrder(n, b)); assertList(listReturnedWhenFilteringBy(IN, Arrays.asList("b", null)), containsResultsInOrder(b, n)); } }