public void ActionableErrorInfo_Constructor_WithErrorInfo_InitializesProperties() { //------------Setup for test-------------------------- var errorInfo = new ErrorInfo { ErrorType = ErrorType.Critical, FixData = "FixData", FixType = FixType.ReloadMapping, InstanceID = Guid.NewGuid(), Message = "Message", StackTrace = "StackTrace" }; var actionInvoked = false; var action = new Action(() => { actionInvoked = true; }); //------------Execute Test--------------------------- var actionableErrorInfo = new ActionableErrorInfo(errorInfo, action); //------------Assert Results------------------------- Assert.AreEqual(errorInfo.ErrorType, actionableErrorInfo.ErrorType); Assert.AreEqual(errorInfo.FixData, actionableErrorInfo.FixData); Assert.AreEqual(errorInfo.FixType, actionableErrorInfo.FixType); Assert.AreEqual(errorInfo.InstanceID, actionableErrorInfo.InstanceID); Assert.AreEqual(errorInfo.Message, actionableErrorInfo.Message); Assert.AreEqual(errorInfo.StackTrace, actionableErrorInfo.StackTrace); actionableErrorInfo.Do(); Assert.IsTrue(actionInvoked); }
// ReSharper disable InconsistentNaming public void ServiceDesignerViewModel_FixErrors_RequiredWhenMappingValid_ShouldRemoveError() // ReSharper restore InconsistentNaming { const string xml = @"<Args> <Input>[ {""Name"":""n1"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":true,""RawValue"":"""",""EmptyToNull"":false}]</Input> </Args>"; // Inputs must have MapsTo var inputs = new List<IDev2Definition> { new Dev2Definition("n1", "n1", "somevalue", false, "somevalue", false, "") }; var outputs = new List<IDev2Definition>(); var inputMapping = CreateModelProperty("InputMapping", DataMappingListFactory.GenerateMapping(inputs, enDev2ArgumentType.Input)); var outputMapping = CreateModelProperty("OutputMapping", DataMappingListFactory.GenerateMapping(outputs, enDev2ArgumentType.Output)); var instanceID = Guid.NewGuid(); var worstError = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.IsRequiredChanged, FixData = xml }; var vm = CreateServiceDesignerViewModel(instanceID, new[] { inputMapping.Object, outputMapping.Object }, worstError); var actualInputs = vm.DataMappingViewModel.Inputs; Assert.AreEqual(1, actualInputs.Count, "Fix errors returned an incorrect number of outputmappings"); Assert.AreEqual("n1", actualInputs[0].Name, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect Name value"); Assert.AreNotEqual(string.Empty, actualInputs[0].MapsTo, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect MapsTo value"); Assert.IsFalse(vm.ShowLarge, "Fix errors failed to show the mapping."); // Always expect at least one error in the activity's error list - the no error Assert.AreEqual(ErrorType.None, vm.WorstError, "Fix errors failed to clear the error."); Assert.AreEqual(1, vm.DesignValidationErrors.Count, "Fix errors failed to remove the worst error from the activity."); Assert.AreEqual(0, vm.RootModel.Errors.Count, "Fix errors failed to remove the worst error from the activity's root model."); }
// ReSharper disable InconsistentNaming public void ServiceDesignerViewModel_FixErrors_RequiredMapping_Done() // ReSharper restore InconsistentNaming { const string xml = @"<Args> <Input>[ {""Name"":""n1"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":true,""RawValue"":"""",""EmptyToNull"":false}]</Input> </Args>"; // Inputs must NOT have MapsTo var inputs = new List<IDev2Definition> { new Dev2Definition("n1", "", "", false, "", false, "") }; var outputs = new List<IDev2Definition>(); var inputMapping = CreateModelProperty("InputMapping", DataMappingListFactory.GenerateMapping(inputs, enDev2ArgumentType.Input)); var outputMapping = CreateModelProperty("OutputMapping", DataMappingListFactory.GenerateMapping(outputs, enDev2ArgumentType.Output)); var instanceID = Guid.NewGuid(); var worstError = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.IsRequiredChanged, FixData = xml }; var vm = CreateServiceDesignerViewModel(instanceID, new[] { inputMapping.Object, outputMapping.Object }, worstError); vm.FixErrorsCommand.Execute(null); var actualInputs = vm.DataMappingViewModel.Inputs; //asserts Assert.AreEqual(1, actualInputs.Count, "Fix errors returned an incorrect number of outputmappings"); Assert.AreEqual("n1", actualInputs[0].Name, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect Name value"); Assert.AreEqual(string.Empty, actualInputs[0].MapsTo, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect MapsTo value"); Assert.IsTrue(vm.ShowLarge, "Fix errors failed to show the mapping."); // Simulate fixing error... vm.DataMappingViewModel.Inputs[0].MapsTo = string.Empty; vm.DataMappingViewModel.Inputs[0].Required = true; vm.ShowLarge = false; Assert.IsFalse(vm.ShowLarge, "Fix errors failed to show the mapping."); Assert.AreEqual(1, vm.DesignValidationErrors.Count, "Fix errors failed to remove the worst error from the activity."); }
// ReSharper disable InconsistentNaming public void ServiceDesignerViewModel_FixErrors_DoesNotSetResourceModelValidWhenResourceStillHasErrors() // ReSharper restore InconsistentNaming { //---------------------------------Setup------------------------------------------------------------------------------------------------------- const string xml = @"<Args> <Input>[ {""Name"":""n1"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}, {""Name"":""n2"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}, {""Name"":""n3"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}]</Input> <Output>[{""Name"":""result"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}]</Output> </Args>"; var inputs = new List<IDev2Definition>(); var outputs = new List<IDev2Definition>(); var inputMapping = CreateModelProperty("InputMapping", DataMappingListFactory.GenerateMapping(inputs, enDev2ArgumentType.Input)); var outputMapping = CreateModelProperty("OutputMapping", DataMappingListFactory.GenerateMapping(outputs, enDev2ArgumentType.Output)); inputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); outputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); var instanceID = Guid.NewGuid(); var worstError = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.ReloadMapping, FixData = xml }; IErrorInfo[] resourceErrors = { worstError, new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Warning, FixType = FixType.ReloadMapping, FixData = xml }, new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Warning, FixType = FixType.ReloadMapping, FixData = xml } }; var vm = CreateServiceDesignerViewModel(instanceID, new[] { inputMapping.Object, outputMapping.Object }, resourceErrors); vm.RootModel.AddError(resourceErrors[0]); vm.RootModel.AddError(resourceErrors[1]); //-----------------------------Assert Preconditions---------------------------------------------------------------------------- Assert.IsFalse(vm.IsWorstErrorReadOnly); Assert.IsFalse(vm.IsFixed); Assert.AreEqual(3, vm.RootModel.Errors.Count); //-----------------------------Execute----------------------------------------------------------------------------------------- vm.DesignValidationErrors.RemoveAt(2); vm.DesignValidationErrors.RemoveAt(1); vm.FixErrorsCommand.Execute(null); Assert.IsTrue(vm.IsWorstErrorReadOnly); vm.DoneCompletedCommand.Execute(null); Assert.IsTrue(vm.IsFixed); Assert.IsTrue(vm.RootModel.HasErrors); Assert.AreEqual(2, vm.RootModel.Errors.Count); Assert.IsFalse(vm.RootModel.IsValid); }
// ReSharper disable InconsistentNaming public void ServiceDesignerViewModel_FixErrors_FixReloadMapping_Done() // ReSharper restore InconsistentNaming { const string xml = @"<Args> <Input>[ {""Name"":""n1"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}, {""Name"":""n2"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}, {""Name"":""n3"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}]</Input> <Output>[{""Name"":""result"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}]</Output> </Args>"; var inputs = new List<IDev2Definition>(); var outputs = new List<IDev2Definition>(); var inputMapping = CreateModelProperty("InputMapping", DataMappingListFactory.GenerateMapping(inputs, enDev2ArgumentType.Input)); var outputMapping = CreateModelProperty("OutputMapping", DataMappingListFactory.GenerateMapping(outputs, enDev2ArgumentType.Output)); inputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); outputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); var instanceID = Guid.NewGuid(); var worstError = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.ReloadMapping, FixData = xml }; var vm = CreateServiceDesignerViewModel(instanceID, new[] { inputMapping.Object, outputMapping.Object }, worstError); vm.FixErrorsCommand.Execute(null); var actualInputs = vm.DataMappingViewModel.Inputs; var actualOutputs = vm.DataMappingViewModel.Outputs; Assert.AreEqual(3, actualInputs.Count, "Fix errors returned an incorrect number of outputmappings"); Assert.AreEqual("n1", actualInputs[0].Name, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect Name value"); Assert.AreEqual(string.Empty, actualInputs[0].DefaultValue, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect DefaultValue value"); Assert.AreEqual(string.Empty, actualInputs[0].RecordSetName, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect RecordSetName value"); Assert.AreEqual("n2", actualInputs[1].Name, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect Name value"); Assert.AreEqual(string.Empty, actualInputs[1].MapsTo, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect MapsTo value"); Assert.AreEqual(string.Empty, actualInputs[1].DefaultValue, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect DefaultValue value"); Assert.AreEqual(string.Empty, actualInputs[1].RecordSetName, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect RecordSetName value"); Assert.AreEqual(string.Empty, actualInputs[1].Value, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect Value value"); Assert.AreEqual("n3", actualInputs[2].Name, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect Name value"); Assert.AreEqual(string.Empty, actualInputs[2].MapsTo, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect MapsTo value"); Assert.AreEqual(string.Empty, actualInputs[2].DefaultValue, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect DefaultValue value"); Assert.AreEqual(string.Empty, actualInputs[2].RecordSetName, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect RecordSetName value"); Assert.AreEqual(string.Empty, actualInputs[2].Value, "Fix errors failed to fix a mapping error. The first output mapping contains an incorrect Value value"); Assert.AreEqual(1, actualOutputs.Count, "Fix errors returned an incorrect number of inputmappings"); Assert.AreEqual("result", actualOutputs[0].Name, "Fix errors failed to fix a mapping error. The first input mapping contains an incorrect Name value"); Assert.AreEqual(string.Empty, actualOutputs[0].MapsTo, "Fix errors failed to fix a mapping error. The first input mapping contains an incorrect MapsTo value"); Assert.AreEqual(string.Empty, actualOutputs[0].DefaultValue, "Fix errors failed to fix a mapping error. The first input mapping contains an incorrect DefaultValue value"); Assert.AreEqual(string.Empty, actualOutputs[0].RecordSetName, "Fix errors failed to fix a mapping error. The first input mapping contains an incorrect RecordSetName value"); Assert.AreEqual(string.Empty, actualOutputs[0].Value, "Fix errors failed to fix a mapping error. The first input mapping contains an incorrect Value value"); Assert.IsTrue(vm.ShowLarge, "Fix errors failed to show the mapping."); // Called: 1 x ActivityViewModel constructor and 1 x DataMappingViewModel constructor inputMapping.Verify(p => p.SetValue(It.IsAny<object>()), Times.Exactly(4)); outputMapping.Verify(p => p.SetValue(It.IsAny<object>()), Times.Exactly(4)); // Always expect at least one error in the activity's error list - the no error Assert.AreEqual(ErrorType.None, vm.WorstError, "Fix errors failed to clear the error."); Assert.AreEqual(1, vm.DesignValidationErrors.Count, "Fix errors failed to remove the worst error from the activity."); Assert.AreEqual(0, vm.RootModel.Errors.Count, "Fix errors failed to remove the worst error from the activity's root model."); Assert.IsTrue(vm.IsWorstErrorReadOnly); vm.DoneCompletedCommand.Execute(null); Assert.IsTrue(vm.IsFixed); }
public void ServiceDesignerViewModel_FixErrorsCommand_InputDefinitionsMalformed_NoInputsOneOutputPresent() { //------------Setup for test-------------------------- const string xml = @"<Args> <Input>[ {""Name"":""n1"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}, {""Name"":""n2"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}, {""Name"":""n3"",""MapsTo"":"""",""Value"":"""",IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}]</Input> <Output>[{""Name"":""result"",""MapsTo"":"""",""Value"":"""",""IsRecordSet"":false,""RecordSetName"":"""",""IsEvaluated"":false,""DefaultValue"":"""",""IsRequired"":false,""RawValue"":"""",""EmptyToNull"":false}]</Output> </Args>"; var inputs = new List<IDev2Definition>(); var outputs = new List<IDev2Definition>(); var inputMapping = CreateModelProperty("InputMapping", DataMappingListFactory.GenerateMapping(inputs, enDev2ArgumentType.Input)); var outputMapping = CreateModelProperty("OutputMapping", DataMappingListFactory.GenerateMapping(outputs, enDev2ArgumentType.Output)); inputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); outputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); var instanceID = Guid.NewGuid(); var worstError = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.ReloadMapping, FixData = xml }; var vm = CreateServiceDesignerViewModel(instanceID, new[] { inputMapping.Object, outputMapping.Object }, worstError); vm.FixErrorsCommand.Execute(null); var actualInputs = vm.DataMappingViewModel.Inputs; var actualOutputs = vm.DataMappingViewModel.Outputs; //------------Assert Results------------------------- // No exception, all is good ;) Assert.AreEqual(0, actualInputs.Count); Assert.AreEqual(1, actualOutputs.Count); }
public void ServiceDesignerViewModel_FixErrorsCommand_ErrorMemoDataIsInvalidXml_NoInputsOrOutputsPresent() { //------------Setup for test-------------------------- var inputs = new List<IDev2Definition>(); var outputs = new List<IDev2Definition>(); var inputMapping = CreateModelProperty("InputMapping", DataMappingListFactory.GenerateMapping(inputs, enDev2ArgumentType.Input)); var outputMapping = CreateModelProperty("OutputMapping", DataMappingListFactory.GenerateMapping(outputs, enDev2ArgumentType.Output)); inputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); outputMapping.Setup(p => p.SetValue(It.IsAny<object>())).Verifiable(); var instanceID = Guid.NewGuid(); var worstError = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.ReloadMapping, FixData = "fix me" }; var vm = CreateServiceDesignerViewModel(instanceID, new[] { inputMapping.Object, outputMapping.Object }, worstError); vm.FixErrorsCommand.Execute(null); var actualInputs = vm.DataMappingViewModel.Inputs; var actualOutputs = vm.DataMappingViewModel.Outputs; //------------Assert Results------------------------- // No exception, all is good ;) Assert.AreEqual(0, actualInputs.Count); Assert.AreEqual(0, actualOutputs.Count); }
// ReSharper disable InconsistentNaming public void ServiceDesignerViewModel_OpenParent_WhenDeleted_DoesNothing() // ReSharper restore InconsistentNaming { var eventAggregator = new Mock<IEventAggregator>(); //eventAggregator.Setup(e => e.Publish(It.IsAny<EditActivityMessage>())).Verifiable(); var instanceID = Guid.NewGuid(); var error1 = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.ReloadMapping, FixData = "xxxxx" }; var error2 = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.Delete, FixData = null }; var vm = CreateServiceDesignerViewModel(instanceID, false, eventAggregator.Object, null, error1, error2); Assert.IsTrue(vm.IsDeleted); // ------ Execute Test ----- vm.ShowParent = true; eventAggregator.Verify(e => e.Publish(It.IsAny<EditActivityMessage>()), Times.Never(), "EditActivityMessage was published for deleted activity."); }
// ReSharper disable InconsistentNaming public void ServiceDesignerViewModel_Constructor_ResourceContainingDeletedError_InitializesPropertiesCorrectly() // ReSharper restore InconsistentNaming { var instanceID = Guid.NewGuid(); var error1 = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.ReloadMapping, FixData = "xxxxx" }; var error2 = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.Delete, FixData = null }; var vm = CreateServiceDesignerViewModel(instanceID, error1, error2); Assert.IsTrue(vm.IsDeleted, "Constructor did not set IsDeleted to true when the resource model has any errors where the FixType is Delete."); Assert.AreEqual(1, vm.LastValidationMemo.Errors.Count, "Constructor did not remove non delete errors."); Assert.IsTrue(vm.IsWorstErrorReadOnly, "Constructor did set IsWorstErrorReadOnly to true for Delete."); Assert.IsTrue(vm.IsFixed); Assert.IsFalse(vm.IsEditable, "Constructor did set IsEditable to false for Delete."); }
public void ServiceDesignerViewModel_Constructor_AnyArgs_SetsLastValidationMemo() { var instanceID = Guid.NewGuid(); var error = new ErrorInfo { InstanceID = instanceID, Message = "Error occurred", ErrorType = ErrorType.Critical, FixType = FixType.None }; var model = CreateServiceDesignerViewModel(instanceID, error); Assert.IsNotNull(model.LastValidationMemo); Assert.AreEqual(instanceID, model.LastValidationMemo.InstanceID); Assert.AreEqual(1, model.DesignValidationErrors.Count); Assert.AreSame(error, model.DesignValidationErrors[0], model.DesignValidationErrors[0].Message); }
public void ResourceModel_RemoveError_ErrorIsNotFound_DoesNothing() { var instanceID = Guid.NewGuid(); IErrorInfo err1 = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Critical, FixType = FixType.ReloadMapping }; IErrorInfo err2 = new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.Warning, FixType = FixType.ReloadMapping }; var model = new ResourceModel(new Mock<IEnvironmentModel>().Object, new Mock<IEventAggregator>().Object); model.AddError(err1); model.AddError(err2); //------------Execute Test--------------------------- model.RemoveError(new ErrorInfo { InstanceID = instanceID, ErrorType = ErrorType.None, FixType = FixType.Delete }); //------------Assert Results------------------------- var errors = model.GetErrors(instanceID); Assert.AreEqual(2, errors.Count); Assert.AreSame(err1, errors[0]); Assert.AreSame(err2, errors[1]); }
public void ResourceModel_Environment_DesignValidationService_WiredUp() { var eventPublisher = new EventPublisher(); var environmentID = Guid.NewGuid(); var environment = new Mock<IEnvironmentModel>(); environment.Setup(e => e.ID).Returns(environmentID); environment.Setup(e => e.Connection.ServerEvents).Returns(eventPublisher); var instanceID = Guid.NewGuid(); var model = new ResourceModel(environment.Object, new Mock<IEventAggregator>().Object); var errors = model.GetErrors(instanceID); Assert.AreEqual(0, errors.Count); var err = new ErrorInfo { InstanceID = instanceID, }; var memo = new DesignValidationMemo { InstanceID = environmentID, Errors = new List<IErrorInfo> { err } }; //------------Execute Test--------------------------- eventPublisher.Publish(memo); //------------Assert Results------------------------- errors = model.GetErrors(instanceID); Assert.AreEqual(1, errors.Count); Assert.AreSame(err, errors[0]); }
public void ActivityDesignerViewModel_Collapse_HelpButtonGetsRemovedOnCollapse() { //------------Setup for test-------------------------- var mockModelItem = GenerateMockModelItem(); Mock<IContextualResourceModel> setupResourceModelMock = Dev2MockFactory.SetupResourceModelMock(); ErrorInfo errorInfo = new ErrorInfo { InstanceID = new Guid() }; var envRepo = new Mock<IEnvironmentRepository>(); envRepo.Setup(e => e.ActiveEnvironment).Returns(setupResourceModelMock.Object.Environment); IObservableReadOnlyList<IErrorInfo> testErrors = new ObservableReadOnlyList<IErrorInfo> { errorInfo }; setupResourceModelMock.Setup(c => c.Errors).Returns(testErrors); setupResourceModelMock.Setup(c => c.GetErrors(It.IsAny<Guid>())).Returns(new List<IErrorInfo> { errorInfo }); var viewModel = new ServiceDesignerViewModel(mockModelItem.Object, setupResourceModelMock.Object, envRepo.Object, new Mock<IEventAggregator>().Object, new TestAsyncWorker()); Assert.AreEqual(1, viewModel.TitleBarToggles.Count); viewModel.ShowLarge = true; Assert.AreEqual(2, viewModel.TitleBarToggles.Count); //------------Execute Test--------------------------- viewModel.Collapse(); //------------Assert Results------------------------- Assert.AreEqual(1, viewModel.TitleBarToggles.Count); }