use of io.spine.client.Topic in project core-java by SpineEventEngine.
the class SubscriptionServiceShould method cancel_subscription_on_topic.
@Test
public void cancel_subscription_on_topic() {
final BoundedContext boundedContext = setupBoundedContextWithProjectAggregateRepo();
final SubscriptionService subscriptionService = SubscriptionService.newBuilder().add(boundedContext).build();
final Target target = getProjectQueryTarget();
final Topic topic = requestFactory.topic().forTarget(target);
// Subscribe
final MemoizeStreamObserver<Subscription> subscribeObserver = new MemoizeStreamObserver<>();
subscriptionService.subscribe(topic, subscribeObserver);
// Activate subscription
final MemoizeStreamObserver<SubscriptionUpdate> activateSubscription = spy(new MemoizeStreamObserver<SubscriptionUpdate>());
subscriptionService.activate(subscribeObserver.streamFlowValue, activateSubscription);
// Cancel subscription
subscriptionService.cancel(subscribeObserver.streamFlowValue, new MemoizeStreamObserver<Response>());
// Post update to Stand
final ProjectId projectId = ProjectId.newBuilder().setId("some-other-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);
// The update must not be handled by the observer
verify(activateSubscription, never()).onNext(any(SubscriptionUpdate.class));
verify(activateSubscription, never()).onCompleted();
}
use of io.spine.client.Topic in project core-java by SpineEventEngine.
the class StandShould method trigger_subscription_callback_upon_update_of_projection.
@Test
public void trigger_subscription_callback_upon_update_of_projection() {
final Stand stand = prepareStandWithAggregateRepo(mock(StandStorage.class));
final Topic allProjects = requestFactory.topic().allOf(Project.class);
final MemoizeEntityUpdateCallback memoizeCallback = new MemoizeEntityUpdateCallback();
subscribeAndActivate(stand, allProjects, memoizeCallback);
assertNull(memoizeCallback.newEntityState);
final Map.Entry<ProjectId, Project> sampleData = fillSampleProjects(1).entrySet().iterator().next();
final ProjectId projectId = sampleData.getKey();
final Project project = sampleData.getValue();
final Version stateVersion = GivenVersion.withNumber(1);
stand.update(asEnvelope(projectId, project, stateVersion));
final Any packedState = AnyPacker.pack(project);
assertEquals(packedState, memoizeCallback.newEntityState);
}
use of io.spine.client.Topic in project core-java by SpineEventEngine.
the class StandShould method trigger_subscription_callback_upon_update_of_aggregate.
@Test
public void trigger_subscription_callback_upon_update_of_aggregate() {
final Stand stand = prepareStandWithAggregateRepo(mock(StandStorage.class));
final Topic allCustomers = requestFactory.topic().allOf(Customer.class);
final MemoizeEntityUpdateCallback memoizeCallback = new MemoizeEntityUpdateCallback();
subscribeAndActivate(stand, allCustomers, memoizeCallback);
assertNull(memoizeCallback.newEntityState);
final Map.Entry<CustomerId, Customer> sampleData = fillSampleCustomers(1).entrySet().iterator().next();
final CustomerId customerId = sampleData.getKey();
final Customer customer = sampleData.getValue();
final Version stateVersion = GivenVersion.withNumber(1);
stand.update(asEnvelope(customerId, customer, stateVersion));
final Any packedState = AnyPacker.pack(customer);
assertEquals(packedState, memoizeCallback.newEntityState);
}
Aggregations