Search in sources :

Example 21 with Event

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

the class EventValidatorShould method validate_event_messages.

@Test
public void validate_event_messages() {
    final MessageValidator messageValidator = mock(MessageValidator.class);
    when(messageValidator.validate(any(Message.class))).thenReturn(newArrayList(ConstraintViolation.getDefaultInstance(), ConstraintViolation.getDefaultInstance()));
    final Event event = eventFactory.createEvent(Sample.messageOfType(ProjectCreated.class));
    final EventValidator eventValidator = new EventValidator(messageValidator);
    final Optional<MessageInvalid> error = eventValidator.validate(EventEnvelope.of(event));
    assertTrue(error.isPresent());
    final Error actualError = error.get().asError();
    assertEquals(EventValidationError.getDescriptor().getFullName(), actualError.getType());
}
Also used : Message(com.google.protobuf.Message) Event(io.spine.core.Event) Error(io.spine.base.Error) EventValidationError(io.spine.core.EventValidationError) MessageValidator(io.spine.validate.MessageValidator) MessageInvalid(io.spine.core.MessageInvalid) ProjectCreated(io.spine.test.event.ProjectCreated) Test(org.junit.Test)

Example 22 with Event

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

the class IntegrationBusShould method dispatch_events_from_one_BC_to_entities_with_ext_subscribers_of_multiple_BCs.

@Test
public void dispatch_events_from_one_BC_to_entities_with_ext_subscribers_of_multiple_BCs() {
    final InMemoryTransportFactory transportFactory = InMemoryTransportFactory.newInstance();
    final Set<BoundedContextName> destinationNames = newHashSet();
    final BoundedContext sourceContext = contextWithTransport(transportFactory);
    for (int i = 0; i < 42; i++) {
        final BoundedContext destinationCtx = contextWithContextAwareEntitySubscriber(transportFactory);
        final BoundedContextName name = destinationCtx.getName();
        destinationNames.add(name);
    }
    assertTrue(ContextAwareProjectDetails.getExternalContexts().isEmpty());
    final Event event = projectCreated();
    sourceContext.getEventBus().post(event);
    assertEquals(destinationNames.size(), ContextAwareProjectDetails.getExternalContexts().size());
    assertEquals(destinationNames.size(), ContextAwareProjectDetails.getExternalEvents().size());
}
Also used : InMemoryTransportFactory(io.spine.server.integration.memory.InMemoryTransportFactory) Event(io.spine.core.Event) BoundedContext(io.spine.server.BoundedContext) BoundedContextName(io.spine.core.BoundedContextName) Test(org.junit.Test)

Example 23 with Event

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

the class IntegrationBusShould method avoid_dispatching_events_from_one_BC_to_domestic_standalone_subscribers_of_another_BC.

@Test
public void avoid_dispatching_events_from_one_BC_to_domestic_standalone_subscribers_of_another_BC() {
    final InMemoryTransportFactory transportFactory = InMemoryTransportFactory.newInstance();
    final BoundedContext sourceContext = contextWithTransport(transportFactory);
    final BoundedContext destContext = contextWithExternalSubscribers(transportFactory);
    assertNull(ProjectEventsSubscriber.getDomesticEvent());
    final Event event = projectStarted();
    sourceContext.getEventBus().post(event);
    assertNotEquals(AnyPacker.unpack(event.getMessage()), ProjectEventsSubscriber.getDomesticEvent());
    assertNull(ProjectEventsSubscriber.getDomesticEvent());
    destContext.getEventBus().post(event);
    assertEquals(AnyPacker.unpack(event.getMessage()), ProjectEventsSubscriber.getDomesticEvent());
}
Also used : InMemoryTransportFactory(io.spine.server.integration.memory.InMemoryTransportFactory) Event(io.spine.core.Event) BoundedContext(io.spine.server.BoundedContext) Test(org.junit.Test)

Example 24 with Event

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

the class IntegrationBusShould method update_local_subscriptions_upon_repeated_RequestedMessageTypes.

@Test
public void update_local_subscriptions_upon_repeated_RequestedMessageTypes() {
    final InMemoryTransportFactory transportFactory = InMemoryTransportFactory.newInstance();
    final BoundedContext sourceContext = contextWithTransport(transportFactory);
    final BoundedContext destinationCtx = contextWithTransport(transportFactory);
    // Prepare two external subscribers for the different events in the the `destinationCtx`.
    final ProjectEventsSubscriber projectCreatedSubscriber = new ProjectEventsSubscriber();
    final ProjectStartedExtSubscriber projectStartedSubscriber = new ProjectStartedExtSubscriber();
    // Before anything happens, there were no events received by those.
    assertNull(ProjectEventsSubscriber.getExternalEvent());
    assertNull(ProjectStartedExtSubscriber.getExternalEvent());
    // Both events are prepared along with the `EventBus` of the source bounded context.
    final EventBus sourceEventBus = sourceContext.getEventBus();
    final Event eventA = projectCreated();
    final Event eventB = projectStarted();
    // Both events are emitted, `ProjectCreated` subscriber only is present.
    destinationCtx.getIntegrationBus().register(projectCreatedSubscriber);
    sourceEventBus.post(eventA);
    sourceEventBus.post(eventB);
    // Only `ProjectCreated` should have been dispatched.
    assertEquals(AnyPacker.unpack(eventA.getMessage()), ProjectEventsSubscriber.getExternalEvent());
    assertNull(ProjectStartedExtSubscriber.getExternalEvent());
    // Clear before the next round starts.
    ProjectStartedExtSubscriber.clear();
    ProjectEventsSubscriber.clear();
    // Both events are emitted, No external subscribers at all.
    destinationCtx.getIntegrationBus().unregister(projectCreatedSubscriber);
    sourceEventBus.post(eventA);
    sourceEventBus.post(eventB);
    // No events should have been dispatched.
    assertNull(ProjectEventsSubscriber.getExternalEvent());
    assertNull(ProjectStartedExtSubscriber.getExternalEvent());
    // Both events are emitted, `ProjectStarted` subscriber only is present
    destinationCtx.getIntegrationBus().register(projectStartedSubscriber);
    sourceEventBus.post(eventA);
    sourceEventBus.post(eventB);
    // This time `ProjectStarted` event should only have been dispatched.
    assertNull(ProjectEventsSubscriber.getExternalEvent());
    assertEquals(AnyPacker.unpack(eventB.getMessage()), ProjectStartedExtSubscriber.getExternalEvent());
}
Also used : ProjectStartedExtSubscriber(io.spine.server.integration.given.IntegrationBusTestEnv.ProjectStartedExtSubscriber) InMemoryTransportFactory(io.spine.server.integration.memory.InMemoryTransportFactory) Event(io.spine.core.Event) BoundedContext(io.spine.server.BoundedContext) EventBus(io.spine.server.event.EventBus) ProjectEventsSubscriber(io.spine.server.integration.given.IntegrationBusTestEnv.ProjectEventsSubscriber) Test(org.junit.Test)

Example 25 with Event

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

the class IntegrationBusShould method not_dispatch_events_to_domestic_subscribers_if_they_requested_external.

@Test
public void not_dispatch_events_to_domestic_subscribers_if_they_requested_external() {
    final InMemoryTransportFactory transportFactory = InMemoryTransportFactory.newInstance();
    final BoundedContext context = contextWithExtEntitySubscribers(transportFactory);
    final ProjectEventsSubscriber eventSubscriber = new ProjectEventsSubscriber();
    final EventBus eventBus = context.getEventBus();
    eventBus.register(eventSubscriber);
    assertNull(ProjectEventsSubscriber.getExternalEvent());
    assertNull(ProjectDetails.getExternalEvent());
    assertNull(ProjectWizard.getExternalEvent());
    assertNull(ProjectCountAggregate.getExternalEvent());
    final Event projectCreated = projectCreated();
    eventBus.post(projectCreated);
    assertNull(ProjectEventsSubscriber.getExternalEvent());
    assertNull(ProjectDetails.getExternalEvent());
    assertNull(ProjectWizard.getExternalEvent());
    assertNull(ProjectCountAggregate.getExternalEvent());
}
Also used : InMemoryTransportFactory(io.spine.server.integration.memory.InMemoryTransportFactory) Event(io.spine.core.Event) BoundedContext(io.spine.server.BoundedContext) EventBus(io.spine.server.event.EventBus) ProjectEventsSubscriber(io.spine.server.integration.given.IntegrationBusTestEnv.ProjectEventsSubscriber) Test(org.junit.Test)

Aggregations

Event (io.spine.core.Event)115 Test (org.junit.Test)75 Command (io.spine.core.Command)19 EventContext (io.spine.core.EventContext)12 BoundedContext (io.spine.server.BoundedContext)12 GivenEvent (io.spine.server.event.given.EventBusTestEnv.GivenEvent)12 Version (io.spine.core.Version)10 TestEventFactory (io.spine.server.command.TestEventFactory)10 Message (com.google.protobuf.Message)9 EventEnvelope (io.spine.core.EventEnvelope)9 InMemoryTransportFactory (io.spine.server.integration.memory.InMemoryTransportFactory)9 Timestamp (com.google.protobuf.Timestamp)6 Ack (io.spine.core.Ack)6 TenantId (io.spine.core.TenantId)6 Error (io.spine.base.Error)5 AggregateMessageDispatcher.dispatchCommand (io.spine.server.aggregate.AggregateMessageDispatcher.dispatchCommand)5 AggregateTestEnv.newTenantId (io.spine.server.aggregate.given.aggregate.AggregateTestEnv.newTenantId)5 StringValue (com.google.protobuf.StringValue)4 GivenEvent (io.spine.core.given.GivenEvent)4 Duration (com.google.protobuf.Duration)3