package org.jboss.test.capedwarf.datastore.test; import java.util.Arrays; import com.google.appengine.api.datastore.Entity; import org.jboss.arquillian.junit.Arquillian; import org.jboss.test.capedwarf.common.support.All; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import static com.google.appengine.api.datastore.Query.CompositeFilterOperator.and; import static com.google.appengine.api.datastore.Query.FilterOperator.EQUAL; import static com.google.appengine.api.datastore.Query.FilterOperator.GREATER_THAN; import static com.google.appengine.api.datastore.Query.FilterOperator.LESS_THAN; import static com.google.appengine.api.datastore.Query.FilterOperator.NOT_EQUAL; import static com.google.appengine.api.datastore.Query.FilterPredicate; 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 QueryFilteringOnCollectionPropertyTest extends QueryTestBase { @Ignore("CAPEDWARF-69") @Test public void queryWithMultipleInequalityFiltersOnMultivaluedPropertyReturnsNothing() throws Exception { storeTestEntityWithSingleProperty(Arrays.asList(1, 2)); assertSet( whenFilteringWith(and( new FilterPredicate(SINGLE_PROPERTY_NAME, GREATER_THAN, 1), new FilterPredicate(SINGLE_PROPERTY_NAME, LESS_THAN, 2))), queryReturnsNothing()); } @Test public void queryWithMultipleEqualityFiltersOnMultivaluedPropertyReturnsEntityIfAllFiltersMatch() throws Exception { Entity entity = storeTestEntityWithSingleProperty(Arrays.asList(1, 2)); assertSet( whenFilteringWith(and( new FilterPredicate(SINGLE_PROPERTY_NAME, EQUAL, 1), new FilterPredicate(SINGLE_PROPERTY_NAME, EQUAL, 2))), queryReturns(entity)); } @Ignore("CAPEDWARF-69") @Test public void queryWithNotEqualFilter() throws Exception { Entity entity12 = storeTestEntityWithSingleProperty(Arrays.asList(1, 2)); Entity entity123 = storeTestEntityWithSingleProperty(Arrays.asList(1, 2, 3)); assertSet(whenFilteringWith(new FilterPredicate(SINGLE_PROPERTY_NAME, NOT_EQUAL, 1)), queryReturns(entity12)); assertSet( whenFilteringWith(and( new FilterPredicate(SINGLE_PROPERTY_NAME, NOT_EQUAL, 1), new FilterPredicate(SINGLE_PROPERTY_NAME, NOT_EQUAL, 2))), queryReturns(entity123)); // NOTE: should only match entity123, but not entity12 } }