public void PerfcounterViewModel_ResetCounters_Command_Error_ShouldCallCommunicationsController()
        {
            //------------Setup for test--------------------------
            var mockPopupController = new Mock <IPopupController>();

            mockPopupController.Setup(controller => controller.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButton>(), It.IsAny <MessageBoxImage>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>())).Verifiable();
            CustomContainer.Register(mockPopupController.Object);
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));
            var perfcounterViewModel = new PerfcounterViewModel(performanceCounterTo, new Mock <IServer>().Object, () => new Mock <IResourcePickerDialog>().Object);
            var mockCommsController  = new Mock <ICommunicationController>();

            mockCommsController.SetupAllProperties();
            var executeMessage = new ExecuteMessage {
                HasError = true, Message = new StringBuilder("Error")
            };

            mockCommsController.Setup(controller => controller.ExecuteCommand <IExecuteMessage>(It.IsAny <IEnvironmentConnection>(), It.IsAny <Guid>())).Returns(executeMessage);
            perfcounterViewModel.CommunicationController = mockCommsController.Object;
            //------------Execute Test---------------------------
            perfcounterViewModel.ResetCountersCommand.Execute(null);
            //------------Assert Results-------------------------
            Assert.AreEqual("ResetPerformanceCounters", perfcounterViewModel.CommunicationController.ServiceName);
            mockCommsController.Verify(controller => controller.ExecuteCommand <IExecuteMessage>(It.IsAny <IEnvironmentConnection>(), It.IsAny <Guid>()));
            mockPopupController.Verify(controller => controller.Show(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MessageBoxButton>(), It.IsAny <MessageBoxImage>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>()));
        }
        public void PerfcounterViewModel_PickResource_WhenNoResource_DoesNothing()
        {
            //------------Setup for test--------------------------
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));
            var mockEnvironmentModel = new Mock <IServer>();
            var mockResourcePicker   = new Mock <IResourcePickerDialog>();

            mockResourcePicker.Setup(dialog => dialog.ShowDialog(It.IsAny <IServer>())).Returns(false);
            var mockExplorerTreeItem = new Mock <IExplorerTreeItem>();
            var newGuid = Guid.NewGuid();

            mockExplorerTreeItem.Setup(item => item.ResourceId).Returns(newGuid);
            mockExplorerTreeItem.Setup(item => item.ResourcePath).Returns("Hello World");
            mockExplorerTreeItem.Setup(item => item.ResourceName).Returns("Hello World");
            mockResourcePicker.Setup(dialog => dialog.SelectedResource).Returns(mockExplorerTreeItem.Object);
            var perfcounterViewModel          = new PerfcounterViewModel(performanceCounterTo, mockEnvironmentModel.Object, () => mockResourcePicker.Object);
            var performanceCountersByResource = perfcounterViewModel.ResourceCounters[0];

            //------------Execute Test---------------------------
            perfcounterViewModel.PickResourceCommand.Execute(performanceCountersByResource);
            //------------Assert Results-------------------------
            Assert.AreEqual(resourceId, performanceCountersByResource.ResourceId);
        }
        public void PerfcounterViewModel_UpdatePerfCounter_ResourceCounterSetDeleted_ShouldNotSaveCounter()
        {
            //------------Setup for test--------------------------
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));
            var perfcounterViewModel = new PerfcounterViewModel(performanceCounterTo, new Mock <IServer>().Object, () => new Mock <IResourcePickerDialog>().Object);

            //------------Assert Preconditions-------------------
            Assert.IsNotNull(perfcounterViewModel.ServerCounters);
            Assert.IsNotNull(perfcounterViewModel.ResourceCounters);
            Assert.AreEqual(1, perfcounterViewModel.ServerCounters.Count);
            Assert.AreEqual(2, perfcounterViewModel.ResourceCounters.Count);
            var serverCounter      = perfcounterViewModel.ServerCounters[0];
            var resourceCounter    = perfcounterViewModel.ResourceCounters[0];
            var newResourceCounter = perfcounterViewModel.ResourceCounters[1];

            Assert.IsTrue(newResourceCounter.IsNew);
            Assert.IsNotNull(serverCounter);
            Assert.IsNotNull(resourceCounter);
            Assert.IsFalse(resourceCounter.IsDeleted);
            //------------Execute Test---------------------------
            resourceCounter.RemoveRow.Execute(null);
            //------------Assert Results-------------------------
            Assert.IsTrue(resourceCounter.IsDeleted);
            perfcounterViewModel.Save(performanceCounterTo);
            Assert.AreEqual(1, perfcounterViewModel.ResourceCounters.Count);
        }
        public void PerfcounterViewModel_Save_ShouldUpdatePerfCounterTo()
        {
            //------------Setup for test--------------------------
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime, false));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests, false));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ExecutionErrors, false));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.NotAuthorisedErrors, false));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.RequestsPerSecond, false));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ServicesNotFound, false));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));
            var perfcounterViewModel = new PerfcounterViewModel(performanceCounterTo, new Mock <IServer>().Object, () => new Mock <IResourcePickerDialog>().Object);
            //------------Assert Preconditions-------------------
            var serverCounter      = perfcounterViewModel.ServerCounters[0];
            var newResourceCounter = perfcounterViewModel.ResourceCounters[1];

            Assert.IsTrue(newResourceCounter.IsNew);
            Assert.IsNotNull(serverCounter);
            serverCounter.TotalErrors          = true;
            serverCounter.AverageExecutionTime = true;
            serverCounter.ConcurrentRequests   = true;
            serverCounter.NotAuthorisedErrors  = true;
            serverCounter.RequestPerSecond     = true;
            serverCounter.WorkFlowsNotFound    = true;
            newResourceCounter.CounterName     = "new resource";
            var newResourceId = Guid.NewGuid();

            newResourceCounter.ResourceId           = newResourceId;
            newResourceCounter.RequestPerSecond     = true;
            newResourceCounter.TotalErrors          = true;
            newResourceCounter.AverageExecutionTime = true;
            newResourceCounter.ConcurrentRequests   = true;
            //------------Execute Test---------------------------
            perfcounterViewModel.Save(performanceCounterTo);
            //------------Assert Results-------------------------
            Assert.AreEqual(6, performanceCounterTo.NativeCounters.Count);
            Assert.IsTrue(performanceCounterTo.NativeCounters[0].IsActive);
            Assert.IsTrue(performanceCounterTo.NativeCounters[1].IsActive);
            Assert.IsTrue(performanceCounterTo.NativeCounters[2].IsActive);
            Assert.IsTrue(performanceCounterTo.NativeCounters[3].IsActive);
            Assert.IsTrue(performanceCounterTo.NativeCounters[4].IsActive);
            Assert.IsTrue(performanceCounterTo.NativeCounters[5].IsActive);
            Assert.AreEqual(6, performanceCounterTo.ResourceCounters.Count);
            Assert.IsTrue(performanceCounterTo.ResourceCounters.Any(counter => counter.PerfCounterType == WarewolfPerfCounterType.AverageExecutionTime));
            Assert.IsTrue(performanceCounterTo.ResourceCounters.Any(counter => counter.PerfCounterType == WarewolfPerfCounterType.RequestsPerSecond));
            Assert.IsTrue(performanceCounterTo.ResourceCounters.Any(counter => counter.PerfCounterType == WarewolfPerfCounterType.ConcurrentRequests));
            Assert.IsTrue(performanceCounterTo.ResourceCounters.Any(counter => counter.PerfCounterType == WarewolfPerfCounterType.ExecutionErrors));
            Assert.AreEqual("new resource", performanceCounterTo.ResourceCounters[2].CategoryInstanceName);
            Assert.AreEqual(newResourceId, performanceCounterTo.ResourceCounters[2].ResourceId);
            Assert.AreEqual("new resource", performanceCounterTo.ResourceCounters[3].CategoryInstanceName);
            Assert.AreEqual(newResourceId, performanceCounterTo.ResourceCounters[3].ResourceId);
            Assert.AreEqual("new resource", performanceCounterTo.ResourceCounters[4].CategoryInstanceName);
            Assert.AreEqual(newResourceId, performanceCounterTo.ResourceCounters[4].ResourceId);
            Assert.AreEqual("new resource", performanceCounterTo.ResourceCounters[5].CategoryInstanceName);
            Assert.AreEqual(newResourceId, performanceCounterTo.ResourceCounters[5].ResourceId);
        }
        public void PerfcounterViewModel_PickResource_WhenNotCounterPassed_DoesNothing()
        {
            //------------Setup for test--------------------------
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));
            var perfcounterViewModel = new PerfcounterViewModel(performanceCounterTo, new Mock <IServer>().Object, () => new Mock <IResourcePickerDialog>().Object);

            //------------Execute Test---------------------------
            perfcounterViewModel.PickResourceCommand.Execute(new object());
            //------------Assert Results-------------------------
            Assert.IsTrue(true);
        }
        public void PerfcounterViewModel_Constructor_WithPerfCounters_ShouldSetupCollections()
        {
            //------------Setup for test--------------------------
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));

            //------------Execute Test---------------------------
            var perfcounterViewModel = new PerfcounterViewModel(performanceCounterTo, new Mock <IServer>().Object, () => new Mock <IResourcePickerDialog>().Object);

            //------------Assert Results-------------------------
            Assert.IsNotNull(perfcounterViewModel.ServerCounters);
            Assert.IsNotNull(perfcounterViewModel.ResourceCounters);
            Assert.AreEqual(1, perfcounterViewModel.ServerCounters.Count);
            Assert.AreEqual(2, perfcounterViewModel.ResourceCounters.Count);
            var serverCounter = perfcounterViewModel.ServerCounters[0];

            Assert.IsNotNull(serverCounter);
            Assert.IsTrue(serverCounter.AverageExecutionTime);
            Assert.IsTrue(serverCounter.ConcurrentRequests);
            Assert.IsFalse(serverCounter.NotAuthorisedErrors);
            Assert.IsFalse(serverCounter.RequestPerSecond);
            Assert.IsFalse(serverCounter.TotalErrors);
            Assert.IsFalse(serverCounter.WorkFlowsNotFound);
            var resourceCounter = perfcounterViewModel.ResourceCounters[0];

            Assert.IsFalse(resourceCounter.IsNew);
            Assert.IsTrue(resourceCounter.AverageExecutionTime);
            Assert.IsTrue(resourceCounter.RequestPerSecond);
            Assert.IsFalse(resourceCounter.ConcurrentRequests);
            Assert.IsFalse(resourceCounter.TotalErrors);
            var newResourceCounter = perfcounterViewModel.ResourceCounters[1];

            Assert.IsTrue(newResourceCounter.IsNew);
        }
        public void PerfcounterViewModel_UpdatePerfCounter_ShouldFirePropertyChange()
        {
            //------------Setup for test--------------------------
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));
            var perfcounterViewModel = new PerfcounterViewModel(performanceCounterTo, new Mock <IServer>().Object, () => new Mock <IResourcePickerDialog>().Object);

            //------------Assert Preconditions-------------------
            Assert.IsNotNull(perfcounterViewModel.ServerCounters);
            Assert.IsNotNull(perfcounterViewModel.ResourceCounters);
            Assert.AreEqual(1, perfcounterViewModel.ServerCounters.Count);
            Assert.AreEqual(2, perfcounterViewModel.ResourceCounters.Count);
            var serverCounter      = perfcounterViewModel.ServerCounters[0];
            var resourceCounter    = perfcounterViewModel.ResourceCounters[0];
            var newResourceCounter = perfcounterViewModel.ResourceCounters[1];

            Assert.IsTrue(newResourceCounter.IsNew);
            Assert.IsNotNull(serverCounter);
            Assert.IsNotNull(resourceCounter);
            //------------Execute Test---------------------------
            serverCounter.TotalErrors      = true;
            newResourceCounter.CounterName = "new resource";
            //------------Assert Results-------------------------
            Assert.IsTrue(perfcounterViewModel.IsDirty);
            Assert.IsTrue(serverCounter.TotalErrors);
            Assert.AreEqual(3, perfcounterViewModel.ResourceCounters.Count);
            Assert.IsFalse(newResourceCounter.IsNew);
            var newNewResourceCounter = perfcounterViewModel.ResourceCounters[2];

            Assert.IsTrue(newNewResourceCounter.IsNew);
        }
        public void PerfcounterViewModel_UpdateHelpDescriptor_HelpText_ShouldCallUpdateHelpText()
        {
            //------------Setup for test--------------------------
            var mockMainViewModel       = new Mock <IShellViewModel>();
            var mockHelpWindowViewModel = new Mock <IHelpWindowViewModel>();

            mockHelpWindowViewModel.Setup(model => model.UpdateHelpText(It.IsAny <string>())).Verifiable();
            mockMainViewModel.Setup(model => model.HelpViewModel).Returns(mockHelpWindowViewModel.Object);
            CustomContainer.Register(mockMainViewModel.Object);
            var performanceCounterTo = new PerformanceCounterTo();

            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.AverageExecutionTime));
            performanceCounterTo.NativeCounters.Add(new TestCounter(WarewolfPerfCounterType.ConcurrentRequests));
            var resourceId = Guid.NewGuid();

            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.AverageExecutionTime, resourceId));
            performanceCounterTo.ResourceCounters.Add(new TestResourceCounter(WarewolfPerfCounterType.RequestsPerSecond, resourceId));
            var perfcounterViewModel = new PerfcounterViewModel(performanceCounterTo, new Mock <IServer>().Object, () => new Mock <IResourcePickerDialog>().Object);

            //------------Execute Test---------------------------
            perfcounterViewModel.UpdateHelpDescriptor("Help");
            //------------Assert Results-------------------------
            mockHelpWindowViewModel.Verify(model => model.UpdateHelpText(It.IsAny <string>()));
        }