public void SimpleInterfaceBasedRoutingShouldWork()
        {
            var processor    = Substitute.For <IMessageHandler <SomeDto> >();
            var router       = RoutingTestEnvironment.GetInterfaceBasedRoutingProvider(processor);
            var routedObject = RoutingTestEnvironment.GetTestDtoData();

            router.RouteObject(null, routedObject);
            processor.Received().HandleMessage(routedObject);
        }
        public void AsyncHandlingWithContextShouldWork()
        {
            var processor = new SomeProcessor();
            var router    = RoutingTestEnvironment.GetInterfaceBasedRoutingProvider(processor);

            Func <Task> f           = async() => { await router.RouteObjectAsync(processor, string.Empty); };
            var         throwResult = f.Should().Throw <AggregateException>();

            throwResult.WithInnerException <SomeRoutingException>();
        }
        public void SimpleInterfaceRoutingWithContextShouldWork2()
        {
            var processor    = Substitute.For <ComplexInterface>();
            var router       = RoutingTestEnvironment.GetInterfaceBasedRoutingProvider(processor);
            var routedObject = RoutingTestEnvironment.GetTestDtoData();
            var context      = new SomeContext();

            router.RouteObject(context, routedObject);

            processor.Received().HandleMessage(context, routedObject);
            processor.Received().HandleMessage(routedObject);


            processor.DidNotReceive().HandleMessage(routedObject, routedObject);
            processor.DidNotReceive().HandleMessage(routedObject, context);
            processor.DidNotReceive().HandleMessage(context, context);
        }