public void RabbitMQBinding_TransactionalConsumption() { IOneWayService channel = _channelFactory.CreateChannel(); Data data = new Data { Id = 1, Name = "Rabbit" }; A.CallTo(() => _errorProcessorFake.Say(A<Data>._)).Throws(() => new Exception("Error while processing data")).Once(); A.CallTo(() => _processorFake.Say(A<Data>.Ignored)).Invokes(() => _ev.Set()); channel.Say(data); bool wait = _ev.Wait(TimeSpan.FromSeconds(10)); Assert.IsTrue(wait, "Service were not being invoked"); A.CallTo(() => _processorFake.Say(A<Data>._)).WhenArgumentsMatch(collection => { data.ShouldBeEquivalentTo(collection[0]); return true; }).MustHaveHappened(); }
public void RabbitMQBinding_NonTransactionalDuplexWithPredefinedCallbackQueueDelivery() { IDuplexService channel = _channelFactory.CreateChannel(); Data data = new Data { Id = 1, Name = "Rabbit" }; A.CallTo(_errorProcessorFake).DoesNothing(); A.CallTo(() => _callbackFake.Say(A<Data>.Ignored)).Invokes(() => _ev.Set()); channel.Say(data); bool wait = _ev.Wait(TimeSpan.FromSeconds(10)); Assert.IsTrue(wait, "Callback were not being invoked"); A.CallTo(() => _processorFake.Say(A<Data>._)).WhenArgumentsMatch(collection => { data.ShouldBeEquivalentTo(collection[0]); return true; }).MustHaveHappened(Repeated.Like(i => i == 1)); A.CallTo(() => _callbackFake.Say(A<Data>._)).WhenArgumentsMatch(collection => { _replyData.ShouldBeEquivalentTo(collection[0]); return true; }).MustHaveHappened(Repeated.Like(i => i == 1)); }
public void RabbitMQBinding_TransactionalDispatching_MessagesCommited() { IOneWayService channel = _channelFactory.CreateChannel(); Data data = new Data { Id = 1, Name = "Rabbit" }; A.CallTo(() => _errorProcessorFake.Say(A<Data>._)).DoesNothing(); A.CallTo(() => _processorFake.Say(A<Data>.Ignored)).Invokes(() => _ev.Set()); using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew)) { channel.Say(data); // Complete the transaction transaction.Complete(); } bool wait = _ev.Wait(TimeSpan.FromSeconds(10)); Assert.IsTrue(wait, "Service were not being invoked"); A.CallTo(() => _processorFake.Say(A<Data>._)).WhenArgumentsMatch(collection => { data.ShouldBeEquivalentTo(collection[0]); return true; }).MustHaveHappened(); }