Search in sources :

Example 21 with Query

use of io.spine.client.Query in project core-java by SpineEventEngine.

the class StandShould method throw_invalid_query_exception_packed_as_IAE_if_invalid_query_message_passed.

@Test
public void throw_invalid_query_exception_packed_as_IAE_if_invalid_query_message_passed() {
    final Stand stand = Stand.newBuilder().build();
    final Query invalidQuery = Query.getDefaultInstance();
    try {
        stand.execute(invalidQuery, StreamObservers.<QueryResponse>noOpObserver());
        fail("Expected IllegalArgumentException due to invalid query message passed," + " but got nothing");
    } catch (IllegalArgumentException e) {
        verifyInvalidQueryException(invalidQuery, e);
    }
}
Also used : Query(io.spine.client.Query) Test(org.junit.Test) TenantAwareTest(io.spine.server.tenant.TenantAwareTest)

Example 22 with Query

use of io.spine.client.Query in project core-java by SpineEventEngine.

the class StandShould method throw_invalid_query_exception_packed_as_IAE_if_querying_unknown_type.

@Test
public void throw_invalid_query_exception_packed_as_IAE_if_querying_unknown_type() {
    final Stand stand = Stand.newBuilder().build();
    checkTypesEmpty(stand);
    // Customer type was NOT registered.
    // So create a query for an unknown type.
    final Query readAllCustomers = requestFactory.query().all(Customer.class);
    try {
        stand.execute(readAllCustomers, StreamObservers.<QueryResponse>noOpObserver());
        fail("Expected IllegalArgumentException upon executing query with unknown target," + " but got nothing");
    } catch (IllegalArgumentException e) {
        verifyUnsupportedQueryTargetException(readAllCustomers, e);
    }
}
Also used : Query(io.spine.client.Query) Test(org.junit.Test) TenantAwareTest(io.spine.server.tenant.TenantAwareTest)

Example 23 with Query

use of io.spine.client.Query in project core-java by SpineEventEngine.

the class StandShould method handle_mistakes_in_query_silently.

@Test
public void handle_mistakes_in_query_silently() {
    //noinspection ZeroLengthArrayAllocation
    final Stand stand = prepareStandWithAggregateRepo(createStandStorage());
    final Customer sampleCustomer = getSampleCustomer();
    final Version stateVersion = Tests.newVersionWithNumber(1);
    stand.update(asEnvelope(sampleCustomer.getId(), sampleCustomer, stateVersion));
    // FieldMask with invalid type URLs.
    final String[] paths = { "invalid_type_url_example", Project.getDescriptor().getFields().get(2).getFullName() };
    final Query customerQuery = requestFactory.query().allWithMask(Customer.class, paths);
    final MemoizeQueryResponseObserver observer = new MemoizeQueryResponseObserver() {

        @Override
        public void onNext(QueryResponse value) {
            super.onNext(value);
            final List<Any> messages = value.getMessagesList();
            assertFalse(messages.isEmpty());
            final Customer customer = AnyPacker.unpack(messages.get(0));
            assertNotEquals(customer, null);
            assertFalse(customer.hasId());
            assertFalse(customer.hasName());
            assertTrue(customer.getNicknamesList().isEmpty());
        }
    };
    stand.execute(customerQuery, observer);
    verifyObserver(observer);
}
Also used : Query(io.spine.client.Query) Customer(io.spine.test.commandservice.customer.Customer) Version(io.spine.base.Version) QueryResponse(io.spine.client.QueryResponse) Any(com.google.protobuf.Any) Test(org.junit.Test) TenantAwareTest(io.spine.server.tenant.TenantAwareTest)

Example 24 with Query

use of io.spine.client.Query in project core-java by SpineEventEngine.

the class QueryBuilderShould method create_queries_with_all_arguments.

@SuppressWarnings("OverlyLongMethod")
// A big test case covering the query arguments co-living
@Test
public void create_queries_with_all_arguments() {
    final Class<? extends Message> testEntityClass = TestEntity.class;
    final int id1 = 314;
    final int id2 = 271;
    final String columnName1 = "column1";
    final Object columnValue1 = 42;
    final String columnName2 = "column2";
    final Object columnValue2 = newMessageId();
    final String fieldName = "TestEntity.secondField";
    final Query query = factory().query().select(testEntityClass).withMask(fieldName).byId(id1, id2).where(eq(columnName1, columnValue1), eq(columnName2, columnValue2)).build();
    assertNotNull(query);
    // Check FieldMask
    final FieldMask mask = query.getFieldMask();
    final Collection<String> fieldNames = mask.getPathsList();
    assertSize(1, fieldNames);
    assertContains(fieldName, fieldNames);
    final Target target = query.getTarget();
    assertFalse(target.getIncludeAll());
    final EntityFilters entityFilters = target.getFilters();
    // Check IDs
    final EntityIdFilter idFilter = entityFilters.getIdFilter();
    final Collection<EntityId> idValues = idFilter.getIdsList();
    final Function<EntityId, Integer> transformer = new EntityIdUnpacker<>(int.class);
    final Collection<Integer> intIdValues = transform(idValues, transformer);
    assertSize(2, idValues);
    assertThat(intIdValues, containsInAnyOrder(id1, id2));
    // Check query params
    final Map<String, Any> columnFilters = entityFilters.getColumnFilterMap();
    assertSize(2, columnFilters);
    final Any actualValue1 = columnFilters.get(columnName1);
    assertNotNull(actualValue1);
    final int actualGenericValue1 = TypeConverter.toObject(actualValue1, int.class);
    assertEquals(columnValue1, actualGenericValue1);
    final Any actualValue2 = columnFilters.get(columnName2);
    assertNotNull(actualValue2);
    final Message actualGenericValue2 = TypeConverter.toObject(actualValue2, ProjectId.class);
    assertEquals(columnValue2, actualGenericValue2);
}
Also used : TestEntity(io.spine.test.client.TestEntity) Query(io.spine.client.Query) EntityIdFilter(io.spine.client.EntityIdFilter) Message(com.google.protobuf.Message) EntityFilters(io.spine.client.EntityFilters) Matchers.containsString(org.hamcrest.Matchers.containsString) Any(com.google.protobuf.Any) EntityId(io.spine.client.EntityId) Target(io.spine.client.Target) FieldMask(com.google.protobuf.FieldMask) Test(org.junit.Test)

Example 25 with Query

use of io.spine.client.Query in project core-java by SpineEventEngine.

the class QueryBuilderShould method persist_only_last_field_mask.

@Test
public void persist_only_last_field_mask() {
    final Iterable<String> iterableFields = singleton("TestEntity.firstField");
    final String[] arrayFields = { "TestEntity.secondField" };
    final Query query = factory().query().select(TestEntity.class).withMask(iterableFields).withMask(arrayFields).build();
    assertNotNull(query);
    final FieldMask mask = query.getFieldMask();
    final Collection<String> maskFields = mask.getPathsList();
    assertSize(arrayFields.length, maskFields);
    assertThat(maskFields, contains(arrayFields));
}
Also used : TestEntity(io.spine.test.client.TestEntity) Query(io.spine.client.Query) Matchers.containsString(org.hamcrest.Matchers.containsString) FieldMask(com.google.protobuf.FieldMask) Test(org.junit.Test)

Aggregations

Query (io.spine.client.Query)27 Test (org.junit.Test)23 Any (com.google.protobuf.Any)10 TenantAwareTest (io.spine.server.tenant.TenantAwareTest)8 Target (io.spine.client.Target)6 Customer (io.spine.test.commandservice.customer.Customer)6 Matchers.containsString (org.hamcrest.Matchers.containsString)6 FieldMask (com.google.protobuf.FieldMask)5 Version (io.spine.base.Version)5 EntityFilters (io.spine.client.EntityFilters)5 QueryResponse (io.spine.client.QueryResponse)4 Message (com.google.protobuf.Message)3 EntityId (io.spine.client.EntityId)3 TestEntity (io.spine.test.client.TestEntity)3 CustomerId (io.spine.test.commandservice.customer.CustomerId)3 TypeUrl (io.spine.type.TypeUrl)3 EntityIdFilter (io.spine.client.EntityIdFilter)2 StandStorage (io.spine.server.stand.StandStorage)2 Sets.newHashSet (com.google.common.collect.Sets.newHashSet)1 CanIgnoreReturnValue (com.google.errorprone.annotations.CanIgnoreReturnValue)1