public void FavoritesLabel_GivenIsSet_ShouldNotifyOfPropertyChange()
        {
            //---------------Set up test pack-------------------

            var aggreMock     = new Mock <IEventAggregator>();
            var resourceModel = new Mock <IContextualResourceModel>();
            var depGrap       = new Mock <IDependencyGraphGenerator>();
            var server        = new Mock <IServer>();
            var value         = new Graph("a");

            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            depGrap.Setup(generator => generator.BuildGraph(It.IsAny <StringBuilder>(), It.IsAny <string>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <int>()))
            .Returns(value);
            resourceModel.SetupGet(model => model.ResourceName).Returns("a");
            var envMock      = new Mock <IServer>();
            var resourceRepo = new Mock <IResourceRepository>();

            resourceRepo.Setup(repository => repository.GetDependenciesXmlAsync(It.IsAny <IContextualResourceModel>(), It.IsAny <bool>()))
            .Returns(ValueFunction);
            envMock.SetupGet(model => model.ResourceRepository).Returns(resourceRepo.Object);
            resourceModel.SetupGet(model => model.Environment).Returns(envMock.Object);
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(depGrap.Object, aggreMock.Object, server.Object)
            {
            };


            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            dependencyVisualiserViewModel.ResourceModel = resourceModel.Object;
            //---------------Test Result -----------------------
            Assert.AreEqual("Show what depends on a", dependencyVisualiserViewModel.FavoritesLabel);
            Assert.AreEqual("Show what a depends on", dependencyVisualiserViewModel.DependantsLabel);
        }
        public void GetItems_GivenEmptyNodes_ShouldZeroExploreNodes()
        {
            //---------------Set up test pack-------------------

            var aggreMock     = new Mock <IEventAggregator>();
            var resourceModel = new Mock <IContextualResourceModel>();
            var depGrap       = new Mock <IDependencyGraphGenerator>();
            var server        = new Mock <IServer>();
            var value         = new Graph("a");

            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            depGrap.Setup(generator => generator.BuildGraph(It.IsAny <StringBuilder>(), It.IsAny <string>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <int>()))
            .Returns(value);
            resourceModel.SetupGet(model => model.ResourceName).Returns("a");
            var envMock      = new Mock <IServer>();
            var resourceRepo = new Mock <IResourceRepository>();

            resourceRepo.Setup(repository => repository.GetDependenciesXmlAsync(It.IsAny <IContextualResourceModel>(), It.IsAny <bool>()))
            .Returns(ValueFunction);
            envMock.SetupGet(model => model.ResourceRepository).Returns(resourceRepo.Object);
            resourceModel.SetupGet(model => model.Environment).Returns(envMock.Object);
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(depGrap.Object, aggreMock.Object, server.Object);
            var mock = new Mock <IExplorerItemNodeViewModel>();
            var explorerItemNodeViewModels = new List <ExplorerItemNodeViewModel>();
            var guids = new List <Guid>();

            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            var itemNodeViewModels = dependencyVisualiserViewModel.GetItems(new List <IDependencyVisualizationNode>(), mock.Object, explorerItemNodeViewModels, guids);

            //---------------Test Result -----------------------
            Assert.AreEqual(0, itemNodeViewModels.Count);
        }
        public void DisplayName_GivenNotDependsOnMe_ShouldBuildDisplayNameCorrectly()
        {
            //---------------Set up test pack-------------------

            var aggreMock     = new Mock <IEventAggregator>();
            var resourceModel = new Mock <IContextualResourceModel>();
            var depGrap       = new Mock <IDependencyGraphGenerator>();
            var server        = new Mock <IServer>();
            var value         = new Graph("a");

            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            depGrap.Setup(generator => generator.BuildGraph(It.IsAny <StringBuilder>(), It.IsAny <string>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <int>()))
            .Returns(value);
            resourceModel.SetupGet(model => model.ResourceName).Returns("a");
            var envMock      = new Mock <IServer>();
            var resourceRepo = new Mock <IResourceRepository>();

            resourceRepo.Setup(repository => repository.GetDependenciesXmlAsync(It.IsAny <IContextualResourceModel>(), It.IsAny <bool>()))
            .Returns(ValueFunction);
            envMock.SetupGet(model => model.ResourceRepository).Returns(resourceRepo.Object);
            resourceModel.SetupGet(model => model.Environment).Returns(envMock.Object);
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(depGrap.Object, aggreMock.Object, server.Object)
            {
                GetDependsOnMe = false,
                ResourceModel  = resourceModel.Object
            };

            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            dependencyVisualiserViewModel.NestingLevel = "0";
            //---------------Test Result -----------------------
            Assert.AreEqual("a*Dependencies", dependencyVisualiserViewModel.DisplayName);
        }
        public void GetDependsOnOther_GivenIsSet_ShouldNotifyOfPropertyChange()
        {
            //---------------Set up test pack-------------------
            var aggreMock = new Mock <IEventAggregator>();
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(aggreMock.Object);
            var wasGetDependsOnOtherCalled    = false;
            var wasGetDependsOnMeCalled       = false;

            dependencyVisualiserViewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "GetDependsOnOther")
                {
                    wasGetDependsOnOtherCalled = true;
                    var visualiserViewModel = (DependencyVisualiserViewModel)sender;
                    if (visualiserViewModel.GetDependsOnOther)
                    {
                        wasGetDependsOnMeCalled = true;
                    }
                }
            };
            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            dependencyVisualiserViewModel.GetDependsOnOther = false;
            //---------------Test Result -----------------------
            Assert.IsTrue(wasGetDependsOnOtherCalled);
            dependencyVisualiserViewModel.GetDependsOnOther = true;
            Assert.IsTrue(wasGetDependsOnMeCalled);
        }
        public void ResourceModel_GivenIsSet_ShouldNotifyOfPropertyChange()
        {
            //---------------Set up test pack-------------------

            var aggreMock     = new Mock <IEventAggregator>();
            var resourceModel = new Mock <IContextualResourceModel>();
            var depGrap       = new Mock <IDependencyGraphGenerator>();
            var server        = new Mock <IServer>();
            var value         = new Graph("a");

            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            value.Nodes.Add(new DependencyVisualizationNode(Guid.NewGuid().ToString(), 2, 2, true, false));
            depGrap.Setup(generator => generator.BuildGraph(It.IsAny <StringBuilder>(), It.IsAny <string>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <int>()))
            .Returns(value);
            resourceModel.SetupGet(model => model.ResourceName).Returns("a");
            var envMock      = new Mock <IServer>();
            var resourceRepo = new Mock <IResourceRepository>();

            resourceRepo.Setup(repository => repository.GetDependenciesXmlAsync(It.IsAny <IContextualResourceModel>(), It.IsAny <bool>()))
            .Returns(ValueFunction);
            envMock.SetupGet(model => model.ResourceRepository).Returns(resourceRepo.Object);
            resourceModel.SetupGet(model => model.Environment).Returns(envMock.Object);
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(depGrap.Object, aggreMock.Object, server.Object);
            var wasResourceModelCalled        = false;
            var wasDisplayNameCalled          = false;

            dependencyVisualiserViewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "ResourceModel")
                {
                    wasResourceModelCalled = true;
                }
                if (args.PropertyName == "DisplayName")
                {
                    wasDisplayNameCalled = true;
                }
            };
            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            dependencyVisualiserViewModel.ResourceModel = resourceModel.Object;
            //---------------Test Result -----------------------
            Assert.IsTrue(wasResourceModelCalled);
            Assert.IsTrue(wasDisplayNameCalled);
        }
        public void Constructor_GivenAggregator_ShouldInitializePopupController()
        {
            //---------------Set up test pack-------------------
            var aggreMock = new Mock <IEventAggregator>();
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(aggreMock.Object);

            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            var fieldInfo = typeof(DependencyVisualiserViewModel).GetField("_popupController", BindingFlags.Instance | BindingFlags.NonPublic);

            //---------------Test Result -----------------------
            Assert.IsNotNull(fieldInfo);
            Assert.IsInstanceOfType(fieldInfo.GetValue(dependencyVisualiserViewModel), typeof(PopupController));
            Assert.IsFalse(dependencyVisualiserViewModel.HasVariables);
            Assert.IsFalse(dependencyVisualiserViewModel.HasDebugOutput);
            Assert.IsFalse(dependencyVisualiserViewModel.TextVisibility);
        }
        public void AvailableHeight_GivenIsSet_ShouldNotifyOfPropertyChange()
        {
            //---------------Set up test pack-------------------
            var aggreMock = new Mock <IEventAggregator>();
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(aggreMock.Object);
            var wasCalled = false;

            dependencyVisualiserViewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "AvailableHeight")
                {
                    wasCalled = true;
                }
            };
            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            dependencyVisualiserViewModel.AvailableHeight = 10;
            //---------------Test Result -----------------------
            Assert.IsTrue(wasCalled);
            Assert.AreEqual(10, dependencyVisualiserViewModel.AvailableHeight);
        }
        public void AllNodes_GivenIsSet_ShouldNotifyOfPropertyChange()
        {
            //---------------Set up test pack-------------------
            var aggreMock = new Mock <IEventAggregator>();
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(aggreMock.Object);
            var wasCalled = false;

            dependencyVisualiserViewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "AllNodes")
                {
                    wasCalled = true;
                }
            };
            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            var explorerItemNodeViewModels = new BindableCollection <IExplorerItemNodeViewModel>();

            dependencyVisualiserViewModel.AllNodes = explorerItemNodeViewModels;
            //---------------Test Result -----------------------
            Assert.IsTrue(wasCalled);
            Assert.IsTrue(ReferenceEquals(explorerItemNodeViewModels, dependencyVisualiserViewModel.AllNodes));
        }
        public void GetItems_GivenNodesAndChilrenWithDependencies_ShouldReturnNodesAndChildDependencies()
        {
            //---------------Set up test pack-------------------

            var aggreMock     = new Mock <IEventAggregator>();
            var resourceModel = new Mock <IContextualResourceModel>();
            var depGrap       = new Mock <IDependencyGraphGenerator>();
            var resourceId    = Guid.NewGuid();
            var resourceId1   = Guid.NewGuid();
            var server        = new Mock <IServer>();
            var mVm           = new Mock <IShellViewModel>();
            var env           = new Mock <IEnvironmentViewModel>();
            var exploreItm    = new Mock <IExplorerItemViewModel>();

            exploreItm.SetupGet(model => model.ResourceName).Returns("a");
            exploreItm.SetupGet(model => model.ResourceType).Returns("a");
            exploreItm.SetupGet(model => model.ResourceId).Returns(resourceId);
            exploreItm.SetupGet(model => model.UnfilteredChildren).Returns(new BindableCollection <IExplorerItemViewModel>());

            var exploreItm1 = new Mock <IExplorerItemViewModel>();

            exploreItm1.SetupGet(model => model.ResourceName).Returns("a");
            exploreItm1.SetupGet(model => model.ResourceType).Returns("a");
            exploreItm1.SetupGet(model => model.ResourceId).Returns(resourceId1);
            exploreItm1.SetupGet(model => model.UnfilteredChildren).Returns(new BindableCollection <IExplorerItemViewModel>());
            env.SetupGet(model => model.UnfilteredChildren).Returns(new BindableCollection <IExplorerItemViewModel>()
            {
                exploreItm.Object, exploreItm1.Object
            });
            mVm.SetupGet(model => model.ExplorerViewModel).Returns(new Mock <IExplorerViewModel>().Object);
            mVm.SetupGet(model => model.ExplorerViewModel.Environments).Returns(new BindableCollection <IEnvironmentViewModel>()
            {
                env.Object
            });
            CustomContainer.Register(mVm.Object);
            var value = new Graph("a");

            value.Nodes.Add(new DependencyVisualizationNode(resourceId.ToString(), 2, 2, true, false));
            value.Nodes.Add(new DependencyVisualizationNode(resourceId.ToString(), 2, 2, true, false));
            depGrap.Setup(generator => generator.BuildGraph(It.IsAny <StringBuilder>(), It.IsAny <string>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <int>()))
            .Returns(value);
            resourceModel.SetupGet(model => model.ResourceName).Returns("a");
            var envMock      = new Mock <IServer>();
            var resourceRepo = new Mock <IResourceRepository>();

            resourceRepo.Setup(repository => repository.GetDependenciesXmlAsync(It.IsAny <IContextualResourceModel>(), It.IsAny <bool>()))
            .Returns(ValueFunction);
            envMock.SetupGet(model => model.ResourceRepository).Returns(resourceRepo.Object);
            resourceModel.SetupGet(model => model.Environment).Returns(envMock.Object);
            var dependencyVisualiserViewModel = new DependencyVisualiserViewModel(depGrap.Object, aggreMock.Object, server.Object);
            var mock = new Mock <IExplorerItemNodeViewModel>();
            var explorerItemNodeViewModels = new List <ExplorerItemNodeViewModel>();
            var guids = new List <Guid>();
            var item  = new DependencyVisualizationNode(resourceId.ToString(), 2, 2, true, true);

            item.NodeDependencies.Add(new DependencyVisualizationNode(resourceId1.ToString(), 50, 50, true, true));

            var nodes = new List <IDependencyVisualizationNode>
            {
                item,
            };

            dependencyVisualiserViewModel.ResourceModel = resourceModel.Object;
            //---------------Assert Precondition----------------
            Assert.IsNotNull(dependencyVisualiserViewModel);
            //---------------Execute Test ----------------------
            var itemNodeViewModels = dependencyVisualiserViewModel.GetItems(nodes, mock.Object, explorerItemNodeViewModels, guids);

            //---------------Test Result -----------------------
            Assert.AreEqual(1, itemNodeViewModels.Count);
            Assert.AreEqual(2, explorerItemNodeViewModels.Count);
            Assert.AreEqual(2, guids.Count);
        }