public void BuildFromExpressionReturning_WhenCalledWithHeaders_ShouldInsertHeadersFromEnvelopeInTransformedExpression()
        {
            var sut = CreateDefaultFactory();

            var expected = new LocalDestinationDescriptor(e => (object) StaticMethodClass.ReturningStaticMethofWithHeadersAndMessageParam((SimpleMessage) e.Message, e.Headers), typeof(SimpleMessage), true, typeof(int));
            var actual = sut.BuildFromExpression(x => StaticMethodClass.ReturningStaticMethofWithHeadersAndMessageParam(x.Message<SimpleMessage>(), x.Headers));

            expected.ShouldBeEqualTo(actual);
        }
        public void BuildFromExpressionNonReturning_WhenCalledWithMultipleSameMessageTypesSpecified_ShouldBuildDestinationDescriptor()
        {
            var sut = CreateDefaultFactory();

            var expectedExpression = LocalDestinationDescriptorFactory.ConvertNonReturningExpressionToReturning(e => StaticMethodClass.VoidStaticMethodWithTwoMessageParams((DerivedSimpleMessage)e.Message, (DerivedSimpleMessage)e.Message));
            var expected = new LocalDestinationDescriptor(expectedExpression, typeof(DerivedSimpleMessage), false, null);
            var actual = sut.BuildFromExpression(x => StaticMethodClass.VoidStaticMethodWithTwoMessageParams(x.Message<DerivedSimpleMessage>(), x.Message<DerivedSimpleMessage>()));

            expected.ShouldBeEqualTo(actual);
        }
        public void BuildFromExpressionNonReturning_WhenCalledWithMessageId_ShouldInsertMessageIdFromEnvelopeInTransformedExpression()
        {
            var sut = CreateDefaultFactory();

            var expectedExpression = LocalDestinationDescriptorFactory.ConvertNonReturningExpressionToReturning(e => StaticMethodClass.VoidStaticMethodWithGuidAndMessageParam((SimpleMessage)e.Message, e.MessageId));
            var expected = new LocalDestinationDescriptor(expectedExpression, typeof(SimpleMessage), false, null);
            var actual = sut.BuildFromExpression(x => StaticMethodClass.VoidStaticMethodWithGuidAndMessageParam(x.Message<SimpleMessage>(), x.MessageId));

            expected.ShouldBeEqualTo(actual);
        }
        public void BuildFromExpressionReturning_WhenCalledWithSimpleReturningStaticExpression_ShouldTransformIt()
        {
            var sut = CreateDefaultFactory();

            var expected = new LocalDestinationDescriptor(e => (object) StaticMethodClass.ReturningStaticMethodWithMessageParam((SimpleMessage) e.Message), typeof (SimpleMessage), true, typeof (int));

            var actual = sut.BuildFromExpression(x => StaticMethodClass.ReturningStaticMethodWithMessageParam(x.Message<SimpleMessage>()));

            expected.ShouldBeEqualTo(actual);
        }
        public void BuildFromExpressionReturning_WhenCalledWithMultipleSameMessageTypesSpecified_ShouldBuildDestinationDescriptor()
        {
            var sut = CreateDefaultFactory();

            var expected = new LocalDestinationDescriptor(e => (object) StaticMethodClass.ReturningStaticMethodWithTwoMessageParams((DerivedSimpleMessage) e.Message, (DerivedSimpleMessage) e.Message), typeof (DerivedSimpleMessage), true, typeof (int));
            var actual = sut.BuildFromExpression(x => StaticMethodClass.ReturningStaticMethodWithTwoMessageParams(x.Message<DerivedSimpleMessage>(), x.Message<DerivedSimpleMessage>()));

            expected.ShouldBeEqualTo(actual);
        }