public void VisitReceiveLocationDoesNotPerformDecoratedVisitorVisitForReferencedApplicationReceiveLocation()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <string> >();

            applicationBindingMock.As <ISupportNamingConvention>();
            applicationBindingMock.As <ISupportValidation>();
            applicationBindingMock.As <IVisitable <IApplicationBindingVisitor> >();

            var referencedApplicationBindingMock = new Mock <IApplicationBinding <string> >();

            var receivePortMock = new Mock <IReceivePort <string> >();

            receivePortMock.Setup(o => o.ApplicationBinding).Returns(referencedApplicationBindingMock.Object);

            var receiveLocationMock = new Mock <IReceiveLocation <string> >();

            receiveLocationMock.Setup(o => o.ReceivePort).Returns(receivePortMock.Object);

            var decoratorVisitorMock = new Mock <IApplicationBindingVisitor>();
            var visitor = CurrentApplicationBindingVisitor.Create(decoratorVisitorMock.Object);

            visitor.VisitApplicationBinding(applicationBindingMock.Object);
            visitor.VisitReceiveLocation(receiveLocationMock.Object);

            decoratorVisitorMock.Verify(v => v.VisitReceiveLocation(receiveLocationMock.Object), Times.Never);
        }
        public void VisitReferencedApplicationBindingDoesNotPropagateDecoratedVisitorNorPerformDecoratedVisitorVisit()
        {
            var referencedApplicationBindingMock = new Mock <IVisitable <IApplicationBindingVisitor> >();

            var decoratorVisitorMock = new Mock <IApplicationBindingVisitor>();

            var visitor = CurrentApplicationBindingVisitor.Create(decoratorVisitorMock.Object);

            visitor.VisitReferencedApplicationBinding(referencedApplicationBindingMock.Object);

            referencedApplicationBindingMock.Verify(a => a.Accept(visitor), Times.Never);
            decoratorVisitorMock.Verify(v => v.VisitReferencedApplicationBinding(referencedApplicationBindingMock.Object), Times.Never);
        }
        public void VisitApplicationBindingSettlesTargetEnvironmentOverridesAndPerformsDecoratedVisitorVisit()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <string> >();

            applicationBindingMock.As <ISupportNamingConvention>();
            applicationBindingMock.As <ISupportValidation>();
            var visitableApplicationBindingMock = applicationBindingMock.As <IVisitable <IApplicationBindingVisitor> >();

            var decoratorVisitorMock = new Mock <IApplicationBindingVisitor>();

            var visitor = CurrentApplicationBindingVisitor.Create(decoratorVisitorMock.Object);

            visitor.VisitApplicationBinding(applicationBindingMock.Object);

            visitableApplicationBindingMock.Verify(a => a.Accept(It.IsAny <ApplicationBindingEnvironmentSettlerVisitor>()), Times.Once);
            decoratorVisitorMock.Verify(v => v.VisitApplicationBinding(applicationBindingMock.Object), Times.Once);
        }
        public void VisitOrchestrationPerformsDecoratedVisitorVisitForCurrentApplicationOrchestration()
        {
            var applicationBindingMock = new Mock <IApplicationBinding <string> >();

            applicationBindingMock.As <ISupportNamingConvention>();
            applicationBindingMock.As <ISupportValidation>();
            applicationBindingMock.As <IVisitable <IApplicationBindingVisitor> >();

            var orchestrationBindingMock = new Mock <IOrchestrationBinding>();

            orchestrationBindingMock.Setup(o => o.ApplicationBinding).Returns(applicationBindingMock.Object);

            var decoratorVisitorMock = new Mock <IApplicationBindingVisitor>();
            var visitor = CurrentApplicationBindingVisitor.Create(decoratorVisitorMock.Object);

            visitor.VisitApplicationBinding(applicationBindingMock.Object);
            visitor.VisitOrchestration(orchestrationBindingMock.Object);

            decoratorVisitorMock.Verify(v => v.VisitOrchestration(orchestrationBindingMock.Object), Times.Once);
        }