public void When_declaring_exchanges_for_message_type_that_has_no_interface_one_exchange_created() { var advancedBus = Substitute.For <IAdvancedBus>(); advancedBus.ExchangeDeclareAsync( Arg.Any <string>(), Arg.Any <string>(), Arg.Any <bool>(), Arg.Any <bool>(), Arg.Any <bool>(), Arg.Any <bool>(), Arg.Any <string>(), Arg.Any <bool>() ) .Returns(Task.FromResult(Substitute.For <IExchange>())); advancedBus.BindAsync(Arg.Any <Exchange>(), Arg.Any <Queue>(), Arg.Any <string>()) .Returns(Task.FromResult(Substitute.For <IBinding>())); var conventions = Substitute.For <IConventions>(); conventions.ExchangeNamingConvention = t => t.Name; var publishExchangeStrategy = new MultipleExchangePublishExchangeDeclareStrategy(conventions, advancedBus); publishExchangeStrategy.DeclareExchangeAsync(typeof(MyMessage), ExchangeType.Topic).Wait(); /* * //ensure that only one exchange is declared * advancedBus.ExchangeDeclareAsync( * Arg<string>.Is.Anything, * Arg<string>.Is.Anything, * Arg<bool>.Is.Anything, * Arg<bool>.Is.Anything, * Arg<bool>.Is.Anything, * Arg<bool>.Is.Anything, * Arg<string>.Is.Anything, * Arg<bool>.Is.Anything).ReturnsForAnyArgs(), opt => opt.Repeat.Times(1)); * * //ensure that the exchange is not bound to anything * advancedBus.AssertWasNotCalled(b => b.BindAsync(Arg<IExchange>.Is.Anything, Arg<IExchange>.Is.Anything, Arg<string>.Is.Anything)); */ }
public void When_declaring_exchanges_for_message_type_that_has_no_interface_one_exchange_created() { var advancedBus = MockRepository.GenerateStub <IAdvancedBus>(); advancedBus.Stub(b => b.ExchangeDeclareAsync( Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything)) .Return(Task.FromResult <IExchange>(MockRepository.GenerateStub <IExchange>())); advancedBus.Stub(b => b.BindAsync(Arg <IExchange> .Is.Anything, Arg <IExchange> .Is.Anything, Arg <string> .Is.Anything)) .Return(Task.FromResult <IBinding>(MockRepository.GenerateStub <IBinding>())); advancedBus.Stub(c => c.Container.Resolve <IConventions>()) .Return(new Conventions(new TypeNameSerializer())); var publishExchangeStrategy = new MultipleExchangePublishExchangeDeclareStrategy(); publishExchangeStrategy.DeclareExchangeAsync(advancedBus, typeof(MyMessage), ExchangeType.Topic).Wait(); //ensure that only one exchange is declared advancedBus.AssertWasCalled(m => m.ExchangeDeclareAsync( Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything), opt => opt.Repeat.Times(1)); //ensure that the exchange is not bound to anything advancedBus.AssertWasNotCalled(b => b.BindAsync(Arg <IExchange> .Is.Anything, Arg <IExchange> .Is.Anything, Arg <string> .Is.Anything)); }
public void When_declaring_exchanges_for_message_with_two_interfaces_exchange_per_interface_created_and_bound_to_concrete_version() { var advancedBus = MockRepository.GenerateStub <IAdvancedBus>(); advancedBus.Stub(b => b.ExchangeDeclareAsync( Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything)) .WhenCalled(m => { var returnValue = MockRepository.GenerateStub <IExchange>(); switch (m.Arguments[0].ToString()) { case "EasyNetQ.Tests.MultipleExchangeTest.MessageWithTwoInterfaces:EasyNetQ.Tests": returnValue.Stub(e => e.Name).Return("MessageWithTwoInterfaces"); break; case "EasyNetQ.Tests.MultipleExchangeTest.IMessageInterfaceOne:EasyNetQ.Tests": returnValue.Stub(e => e.Name).Return("IMessageInterfaceOne"); break; case "EasyNetQ.Tests.MultipleExchangeTest.IMessageInterfaceTwo:EasyNetQ.Tests": returnValue.Stub(e => e.Name).Return("IMessageInterfaceTwo"); break; default: break; } m.ReturnValue = Task.FromResult <IExchange>(returnValue); }) .Return(null); advancedBus.Stub(b => b.BindAsync(Arg <IExchange> .Is.Anything, Arg <IExchange> .Is.Anything, Arg <string> .Is.Anything)) .Return(Task.FromResult <IBinding>(MockRepository.GenerateStub <IBinding>())); advancedBus.Stub(c => c.Container.Resolve <IConventions>()) .Return(new Conventions(new TypeNameSerializer())); var publishExchangeStrategy = new MultipleExchangePublishExchangeDeclareStrategy(); publishExchangeStrategy.DeclareExchangeAsync(advancedBus, typeof(MessageWithTwoInterfaces), ExchangeType.Topic).Wait(); //ensure that only one exchange is declared for concrete type advancedBus.AssertWasCalled(m => m.ExchangeDeclareAsync( Arg <string> .Is.Equal("EasyNetQ.Tests.MultipleExchangeTest.MessageWithTwoInterfaces:EasyNetQ.Tests"), Arg <string> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything), opt => opt.Repeat.Times(1)); //ensure that only one exchange is declared for IMessageInterfaceOne advancedBus.AssertWasCalled(m => m.ExchangeDeclareAsync( Arg <string> .Is.Equal("EasyNetQ.Tests.MultipleExchangeTest.IMessageInterfaceOne:EasyNetQ.Tests"), Arg <string> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything), opt => opt.Repeat.Times(1)); //ensure that only one exchange is declared for IMessageInterfaceTwo advancedBus.AssertWasCalled(m => m.ExchangeDeclareAsync( Arg <string> .Is.Equal("EasyNetQ.Tests.MultipleExchangeTest.IMessageInterfaceTwo:EasyNetQ.Tests"), Arg <string> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <bool> .Is.Anything, Arg <string> .Is.Anything, Arg <bool> .Is.Anything), opt => opt.Repeat.Times(1)); //ensure the IMessageInterfaceOne exchange is bound to the concreate type version advancedBus.AssertWasCalled(b => b.BindAsync( Arg <IExchange> .Matches(m => m.Name == "MessageWithTwoInterfaces"), Arg <IExchange> .Matches(m => m.Name == "IMessageInterfaceOne"), Arg <string> .Is.Anything), opt => opt.Repeat.Times(1)); //ensure the IMessageInterfaceTwo exchange is bound to the concreate type version advancedBus.AssertWasCalled(b => b.BindAsync( Arg <IExchange> .Matches(m => m.Name == "MessageWithTwoInterfaces"), Arg <IExchange> .Matches(m => m.Name == "IMessageInterfaceTwo"), Arg <string> .Is.Anything), opt => opt.Repeat.Times(1)); }