public void TestSource_WhenDifferentConfigsForBaseAndDerived_ThenReceiveFromBoth() { const string exchangeName = "exchange"; const string exchangeType = "type"; const string routingKey = "route"; const string derivedExchangeName = "derived-exchange"; const string derivedExchangeType = "derived-type"; const string derivedRoutingKey = "derived-route"; var derivedTestEvent = new DerivedTestEvent(); var derivedTestEvent2 = new DerivedTestEvent(); var sourceMock = new Mock <IEventSource>(MockBehavior.Strict); sourceMock.Setup(m => m.ReceiveEvents <DerivedTestEvent>()).Returns(Observable.Return(derivedTestEvent)); var derivedSourceMock = new Mock <IEventSource>(MockBehavior.Strict); derivedSourceMock.Setup(m => m.ReceiveEvents <DerivedTestEvent>()).Returns(Observable.Return(derivedTestEvent2)); var factoryMock = new Mock <IEventProcessorFactory>(MockBehavior.Strict); factoryMock.Setup(m => m.CreateSource(exchangeName, exchangeType, routingKey)).Returns(sourceMock.Object); factoryMock.Setup(m => m.CreateSource(derivedExchangeName, derivedExchangeType, derivedRoutingKey)).Returns(derivedSourceMock.Object); var exchangeConfiguration = new ExchangeConfiguration(); exchangeConfiguration.ConfigureEventSource(typeof(TestEvent), exchangeName, exchangeType, routingKey); exchangeConfiguration.ConfigureEventSource(typeof(DerivedTestEvent), derivedExchangeName, derivedExchangeType, derivedRoutingKey); var bus = new Bus(factoryMock.Object, exchangeConfiguration) as IEventSource; var receivedEvents = bus.ReceiveEvents <DerivedTestEvent>().ToArray().Wait(); Assert.Equal(2, receivedEvents.Length); Assert.True(receivedEvents.Contains(derivedTestEvent)); Assert.True(receivedEvents.Contains(derivedTestEvent2)); sourceMock.Verify(m => m.ReceiveEvents <DerivedTestEvent>(), Times.Once); derivedSourceMock.Verify(m => m.ReceiveEvents <DerivedTestEvent>(), Times.Once); }
public void TestSender_WhenDifferentConfigsForBaseAndDerived_ThenSendToBoth() { const string exchangeName = "exchange"; const string derivedExchangeName = "derived-exchange"; var derivedTestEvent = new DerivedTestEvent(); var senderMock = new Mock <IEventSender>(MockBehavior.Strict); senderMock.Setup(m => m.SendEvent(derivedTestEvent)); var derivedSenderMock = new Mock <IEventSender>(MockBehavior.Strict); derivedSenderMock.Setup(m => m.SendEvent(derivedTestEvent)); var factoryMock = new Mock <IEventProcessorFactory>(MockBehavior.Strict); factoryMock.Setup(m => m.CreateSender(exchangeName)).Returns(senderMock.Object); factoryMock.Setup(m => m.CreateSender(derivedExchangeName)).Returns(derivedSenderMock.Object); var exchangeConfiguration = new ExchangeConfiguration(); exchangeConfiguration.ConfigureEventSender(typeof(TestEvent), exchangeName); exchangeConfiguration.ConfigureEventSender(typeof(DerivedTestEvent), derivedExchangeName); var bus = new Bus(factoryMock.Object, exchangeConfiguration) as IEventSender; bus.SendEvent(derivedTestEvent); senderMock.Verify(m => m.SendEvent(derivedTestEvent), Times.Once); derivedSenderMock.Verify(m => m.SendEvent(derivedTestEvent), Times.Once); }
public void TestSource_WhenConfiguredForBaseEvent_ThenReceiveDerived() { const string exchangeName = "exchange"; const string exchangeType = "type"; const string routingKey = "route"; var derivedTestEvent = new DerivedTestEvent(); var sourceMock = new Mock <IEventSource>(MockBehavior.Strict); sourceMock.Setup(m => m.ReceiveEvents <DerivedTestEvent>()).Returns(Observable.Return(derivedTestEvent)); var factoryMock = new Mock <IEventProcessorFactory>(MockBehavior.Strict); factoryMock.Setup(m => m.CreateSource(exchangeName, exchangeType, routingKey)).Returns(sourceMock.Object); var exchangeConfiguration = new ExchangeConfiguration(); exchangeConfiguration.ConfigureEventSource(typeof(TestEvent), exchangeName, exchangeType, routingKey); var bus = new Bus(factoryMock.Object, exchangeConfiguration) as IEventSource; var receivedEvent = bus.ReceiveEvents <DerivedTestEvent>().Wait(); Assert.Equal(derivedTestEvent, receivedEvent); sourceMock.Verify(m => m.ReceiveEvents <DerivedTestEvent>(), Times.Once); }
protected void Handle(DerivedTestEvent ev) { Fired2++; }