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)); } }
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); }