public void Events_are_pushed_into_observable()
        {
            var busEngine = new InMemoryBusEngine();
            var builder   = new NybusBusBuilder(busEngine);

            var list = new List <TestEvent>();

            var disposable = builder.ObserveEvent <TestEvent>().Select(c => c.Message).Subscribe(list.Add);

            var observable = scheduler.CreateHotObservable(
                OnNext(500, fixture.Create <EventMessage <TestEvent> >()),
                OnNext(600, fixture.Create <EventMessage <TestEvent> >()),
                OnNext(1000, fixture.Create <EventMessage <TestEvent> >()),
                OnNext(1200, fixture.Create <EventMessage <TestEvent> >()),
                OnNext(1500, fixture.Create <EventMessage <TestEvent> >())
                );

            var results = scheduler.Start(() => observable.Do(msg => Task.WaitAll(busEngine.HandleEvent(msg))).Select(c => c.Event), 100, 150, 3000);

            disposable.Dispose();

            for (int i = 0; i < list.Count; i++)
            {
                Assert.That(list[i], Is.SameAs(results.Messages[i].Value.Value));
            }
        }
Ejemplo n.º 2
0
        public async Task SubscribeToEvent_TEvent_is_invoked_when_message_is_received()
        {
            var sut = CreateSystemUnderTest();

            sut.SubscribeToEvent <TestEvent>();

            var message = fixture.Create <EventMessage <TestEvent> >();

            var context = fixture.Create <EventContext <TestEvent> >();

            mockScope.Setup(p => p.Resolve <IEventHandler <TestEvent> >()).Returns(mockEventHandler.Object);
            mockEventContextFactory.Setup(p => p.CreateContext(It.IsAny <EventMessage <TestEvent> >(), It.IsAny <INybusOptions>())).Returns(context);
            mockEventHandler.Setup(p => p.Handle(It.IsAny <EventContext <TestEvent> >())).Returns(Task.CompletedTask);

            await testBusEngine.HandleEvent(message);

            mockScope.Verify(p => p.Resolve <IEventHandler <TestEvent> >(), Times.Once);
            mockEventContextFactory.Verify(p => p.CreateContext(message, It.IsAny <INybusOptions>()), Times.Once);
            mockEventHandler.Verify(p => p.Handle(context), Times.Once);
        }