Search in sources :

Example 1 with Target

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

the class QueryBuilderShould method create_queries_with_ids.

@Test
public void create_queries_with_ids() {
    final int id1 = 314;
    final int id2 = 271;
    final Query query = factory().query().select(TestEntity.class).byId(id1, id2).build();
    assertNotNull(query);
    assertFalse(query.hasFieldMask());
    final Target target = query.getTarget();
    assertFalse(target.getIncludeAll());
    final EntityFilters entityFilters = target.getFilters();
    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));
}
Also used : EntityId(io.spine.client.EntityId) Target(io.spine.client.Target) Query(io.spine.client.Query) EntityIdFilter(io.spine.client.EntityIdFilter) EntityFilters(io.spine.client.EntityFilters) Test(org.junit.Test)

Example 2 with Target

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

the class QueryBuilderShould method create_queries_with_type_only.

@Test
public void create_queries_with_type_only() {
    final Class<? extends Message> testEntityClass = TestEntity.class;
    final Query query = factory().query().select(testEntityClass).build();
    assertNotNull(query);
    assertFalse(query.hasFieldMask());
    final Target target = query.getTarget();
    assertTrue(target.getIncludeAll());
    assertEquals(TypeName.of(testEntityClass).value(), target.getType());
}
Also used : TestEntity(io.spine.test.client.TestEntity) Target(io.spine.client.Target) Query(io.spine.client.Query) Test(org.junit.Test)

Example 3 with Target

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

the class SubscriptionServiceShould method handle_cancellation_process_exceptions_and_call_observer_error_callback.

@Test
public void handle_cancellation_process_exceptions_and_call_observer_error_callback() {
    final BoundedContext boundedContext = setupBoundedContextWithProjectAggregateRepo();
    final SubscriptionService subscriptionService = SubscriptionService.newBuilder().add(boundedContext).build();
    final Target target = getProjectQueryTarget();
    final Topic topic = requestFactory.topic().forTarget(target);
    final MemoizeStreamObserver<Subscription> subscriptionObserver = new MemoizeStreamObserver<>();
    subscriptionService.subscribe(topic, subscriptionObserver);
    final String rejectionMessage = "Execution breaking exception";
    final MemoizeStreamObserver<Response> observer = new MemoizeStreamObserver<Response>() {

        @Override
        public void onNext(Response value) {
            super.onNext(value);
            throw new RuntimeException(rejectionMessage);
        }
    };
    subscriptionService.cancel(subscriptionObserver.streamFlowValue, observer);
    assertNotNull(observer.streamFlowValue);
    assertFalse(observer.isCompleted);
    assertNotNull(observer.throwable);
    assertInstanceOf(RuntimeException.class, observer.throwable);
    assertEquals(observer.throwable.getMessage(), rejectionMessage);
}
Also used : Response(io.spine.core.Response) Target(io.spine.client.Target) Topic(io.spine.client.Topic) Subscription(io.spine.client.Subscription) Test(org.junit.Test)

Example 4 with Target

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

the class SubscriptionServiceShould method subscribe_to_topic.

/*
    * Subscription tests
    * ------------------
    */
@Test
public void subscribe_to_topic() {
    final BoundedContext boundedContext = setupBoundedContextWithProjectAggregateRepo();
    final SubscriptionService subscriptionService = SubscriptionService.newBuilder().add(boundedContext).build();
    final String type = boundedContext.getStand().getExposedTypes().iterator().next().value();
    final Target target = getProjectQueryTarget();
    assertEquals(type, target.getType());
    final Topic topic = requestFactory.topic().forTarget(target);
    final MemoizeStreamObserver<Subscription> observer = new MemoizeStreamObserver<>();
    subscriptionService.subscribe(topic, observer);
    assertNotNull(observer.streamFlowValue);
    assertTrue(observer.streamFlowValue.isInitialized());
    assertEquals(observer.streamFlowValue.getTopic().getTarget().getType(), type);
    assertNull(observer.throwable);
    assertTrue(observer.isCompleted);
}
Also used : Target(io.spine.client.Target) Topic(io.spine.client.Topic) Subscription(io.spine.client.Subscription) Test(org.junit.Test)

Example 5 with Target

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

the class SubscriptionServiceShould method activate_subscription.

@Test
public void activate_subscription() {
    final BoundedContext boundedContext = setupBoundedContextWithProjectAggregateRepo();
    final SubscriptionService subscriptionService = SubscriptionService.newBuilder().add(boundedContext).build();
    final Target target = getProjectQueryTarget();
    final Topic topic = requestFactory.topic().forTarget(target);
    // Subscribe to the topic
    final MemoizeStreamObserver<Subscription> subscriptionObserver = new MemoizeStreamObserver<>();
    subscriptionService.subscribe(topic, subscriptionObserver);
    subscriptionObserver.verifyState();
    // Activate subscription
    final MemoizeStreamObserver<SubscriptionUpdate> activationObserver = new MemoizeStreamObserver<>();
    subscriptionService.activate(subscriptionObserver.streamFlowValue, activationObserver);
    // Post update to Stand directly
    final ProjectId projectId = ProjectId.newBuilder().setId("some-id").build();
    final Message projectState = Project.newBuilder().setId(projectId).build();
    final int version = 1;
    final VersionableEntity entity = mockEntity(projectId, projectState, version);
    boundedContext.getStand().post(requestFactory.createCommandContext().getActorContext().getTenantId(), entity);
    // isCompleted set to false since we don't expect activationObserver::onCompleted to be called.
    activationObserver.verifyState(false);
}
Also used : Message(com.google.protobuf.Message) ProjectId(io.spine.test.aggregate.ProjectId) SubscriptionUpdate(io.spine.client.SubscriptionUpdate) AbstractVersionableEntity(io.spine.server.entity.AbstractVersionableEntity) VersionableEntity(io.spine.server.entity.VersionableEntity) Target(io.spine.client.Target) Topic(io.spine.client.Topic) Subscription(io.spine.client.Subscription) Test(org.junit.Test)

Aggregations

Target (io.spine.client.Target)16 Test (org.junit.Test)10 Message (com.google.protobuf.Message)4 Subscription (io.spine.client.Subscription)4 Topic (io.spine.client.Topic)4 Any (com.google.protobuf.Any)3 EntityFilters (io.spine.client.EntityFilters)3 Query (io.spine.client.Query)3 ImmutableList (com.google.common.collect.ImmutableList)2 Maps.newHashMap (com.google.common.collect.Maps.newHashMap)2 FieldMask (com.google.protobuf.FieldMask)2 EntityId (io.spine.client.EntityId)2 EntityStateUpdate (io.spine.client.EntityStateUpdate)2 SubscriptionUpdate (io.spine.client.SubscriptionUpdate)2 Response (io.spine.core.Response)2 Version (io.spine.core.Version)2 GivenVersion (io.spine.core.given.GivenVersion)2 AbstractVersionableEntity (io.spine.server.entity.AbstractVersionableEntity)2 VersionableEntity (io.spine.server.entity.VersionableEntity)2 TenantAwareTest (io.spine.server.tenant.TenantAwareTest)2