コード例 #1
0
        public void ConstructorTest()
        {
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Constructor.Mocked, Behavior.Loose);
            stepEditMock.SampleFilterDefinition = "FilterDefinition";            

            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            Assert.IsNotNull(vm.AvailableProcesses);
            Assert.IsNotNull(vm.SelectedProcessAvailableFields);
            Assert.IsNotNull(vm.AnswerProcessAvailableFields);
            Assert.AreEqual(vm.FilterDefinition, "FilterDefinition");

            var privateAccessor = new PrivateAccessor(vm);
            Assert.IsTrue((bool)privateAccessor.GetField("_isLoading"));
        }
コード例 #2
0
        public void SetupFilters_LoadFiltersCollection_MethodTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.SampleFilterGuid).CallOriginal();

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var vmPrivateAccessor = new PrivateAccessor(vm);

            //Arrange
            var filter1 = Mock.Create<IFilter>(Behavior.Loose);
            Mock.Arrange(() => filter1.FilterGuid).Returns(Guid.Empty);
            
            var filter2 = Mock.Create<IFilter>(Behavior.Loose);
            var filterGuid = Guid.NewGuid();
            Mock.Arrange(() => filter2.FilterGuid).Returns(filterGuid);
            var filterInfo2 = Mock.Create<ProcessFilterInfo>(Behavior.Loose);
            Mock.Arrange(() => filterInfo2.ToFilter()).Returns(filter2);

            var filter3 = Mock.Create<IFilter>(Behavior.Loose);
            Mock.Arrange(() => filter3.FilterGuid).Returns(Guid.Empty);
            var filterInfo3 = Mock.Create<ProcessFilterInfo>(Behavior.Loose);
            Mock.Arrange(() => filterInfo3.ToFilter()).Returns(filter3);

            Mock.Arrange(() => vm.Filters).Returns(new List<IFilter> {filter1});

            var methodParameter = Mock.Create<PublishedProcessWithFiltersInfo>(Behavior.Loose);
            Mock.Arrange(() => methodParameter.Filters).Returns(new Collection<ProcessFilterInfo> { filterInfo2, filterInfo3 });

            vm.Data.SampleFilterGuid = filterGuid;
            Mock.ArrangeSet(() => vm.SelectedFilter = Arg.IsAny<IFilter>())
                .DoInstead<IFilter>(v => Mock.Arrange(() => vm.SelectedFilter).Returns(v));

            //Assert current values
            Assert.IsNull(vmPrivateAccessor.GetField("_answerProcessFitlersInfo"));
            Assert.AreEqual(1, vm.Filters.Count);
            Assert.IsNull(vm.SelectedFilter);

            //Act: Call SetupFilters method
            vmPrivateAccessor.CallMethod("SetupFilters", methodParameter);

            //Assert new values
            Assert.AreEqual(methodParameter, vmPrivateAccessor.GetField("_answerProcessFitlersInfo"));
            Assert.AreEqual(2, vm.Filters.Count);
            Assert.AreEqual(filter2, vm.SelectedFilter);
            Assert.IsFalse((bool)vmPrivateAccessor.GetField("_isLoading"));
        }
コード例 #3
0
        public void RefreshCommandTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.SampleFilterDefinition).CallOriginal();
            Mock.Arrange(() => stepEditMock.SampleFilterGuid).CallOriginal();

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);

            #region SelectedFilter is null
            //Act: Invoke RefreshCommand command
            vm.RefreshCommand.Execute(null);

            //Assert
            Assert.IsNull(vm.SelectedFilter);
            Assert.AreEqual(string.Empty, vm.FilterDefinition);
            #endregion SelectedFilter is null

            #region SelectedFilter.Definition is empty
            //Arrange
            var selectedFilter = Mock.Create<IFilter>(Behavior.Loose);
            Mock.Arrange(() => vm.SelectedFilter).Returns(selectedFilter);

            //Act: Invoke RefreshCommand command
            vm.RefreshCommand.Execute(null);

            //Assert
            Assert.IsNotNull(vm.SelectedFilter);
            Assert.AreEqual(string.Empty, vm.FilterDefinition);
            #endregion SelectedFilter.Definition is empty

            #region All conditions are passed
            //Arrange
            Mock.Arrange(() => selectedFilter.Definition).Returns("SelectedFilterDefinition");

            //Act: Invoke RefreshCommand command
            vm.RefreshCommand.Execute(null);

            //Assert
            Assert.IsNotNull(vm.SelectedFilter);
            Assert.AreEqual("SelectedFilterDefinition", vm.FilterDefinition);
            #endregion All conditions are passed
        }
コード例 #4
0
        public void ClearFilterCommandTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.SampleFilterDefinition).CallOriginal();
            Mock.Arrange(() => stepEditMock.SampleFilterGuid).CallOriginal();

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);

            //Act: Invoke ClearFilterCommand command
            vm.ClearFilterCommand.Execute(null);

            //Assert
            Assert.IsNull(vm.SelectedFilter);
            Assert.AreEqual(string.Empty, vm.FilterDefinition);
            Assert.AreEqual(string.Empty, vm.Data.SampleFilterDefinition);
            Assert.AreEqual(Guid.Empty, vm.Data.SampleFilterGuid);
        }
コード例 #5
0
        public void FilterDefinitionSetterTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.SampleFilterDefinition).CallOriginal();

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            Mock.Arrange(() => vm.GetProcessedFilter()).CallOriginal().OccursOnce();
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "FilterDefinition").DoNothing().MustBeCalled();

            //Act: Assign FilterDefinition property
            vm.FilterDefinition = "Def";

            //Assert
            Assert.AreEqual("Def", vm.FilterDefinition);
            Assert.AreEqual("Def", vm.Data.SampleFilterDefinition);
            Mock.NonPublic.Assert(vm, "RaisePropertyChanged", "FilterDefinition");
        }
コード例 #6
0
        public void SelectedFilterSetter_IsLoaded_Test()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.SampleFilterGuid).CallOriginal();

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            Mock.Arrange(() => vm.GetProcessedFilter()).CallOriginal().OccursOnce();
            Mock.NonPublic.Arrange(vm, "UpdateUdps").DoNothing().OccursOnce();

            var vmPrivateAccessor = new PrivateAccessor(vm);
            vmPrivateAccessor.SetField("_selectedFilter", Mock.Create<IFilter>(Behavior.Loose));
            vmPrivateAccessor.SetField("_isLoading", false);

            var filterDescriptorMock = Mock.Create<IFilterDescriptor>(Behavior.Loose);
            Mock.Arrange(() => filterDescriptorMock.ToJSON()).Returns("FilterText");
            vmPrivateAccessor.SetField("_processedFilter", filterDescriptorMock);

            //Mock filter
            var filterGuid = Guid.NewGuid();
            var filterMock = Mock.Create<IFilter>(Behavior.Loose);
            Mock.Arrange(() => filterMock.FilterGuid).Returns(filterGuid);

            //Act: Assign SelectedFilter property
            vm.SelectedFilter = filterMock;

            //Assert
            Assert.IsNotNull(vm.SelectedFilter);
            Assert.AreEqual(filterMock.FilterGuid, vm.Data.SampleFilterGuid);
            Assert.AreEqual("FilterText", vm.FilterDefinition);
            Mock.NonPublic.Assert(vm, "UpdateUdps", Occurs.Once());
            Mock.Assert(() => vm.GetProcessedFilter(), Occurs.Once());
        }
コード例 #7
0
        public void SelectedChecklistFieldSetter_NewValueIsNotNull_Test()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.ChecklistFieldName).CallOriginal();

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "SelectedChecklistField").OccursOnce();
            Mock.NonPublic.Arrange(vm, "LoadAnswerProcessInfo").OccursOnce();

            //Mock field info object
            var fieldInfoMock = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => fieldInfoMock.SystemName).Returns("Checklist");

            //Act: Assign SelectedChecklistField
            vm.SelectedChecklistField = fieldInfoMock;

            //Assert
            Assert.AreEqual(fieldInfoMock, vm.SelectedChecklistField);
            Assert.AreEqual(fieldInfoMock.SystemName, vm.Data.ChecklistFieldName);

            Mock.NonPublic.Assert(vm, "RaisePropertyChanged", Occurs.Once(), "SelectedChecklistField");
            Mock.NonPublic.Assert(vm, "LoadAnswerProcessInfo", Occurs.Once());
        }
コード例 #8
0
        public void SelectedChecklistFieldSetter_NewValueIsNull_Test()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.ChecklistFieldName).CallOriginal();

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var vmPrivateAccessor = new PrivateAccessor(vm);
            vmPrivateAccessor.SetField("_selectedChecklistField", Mock.Create<FieldInfo>(Behavior.Loose));

            //Arrange
            Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", "SelectedChecklistField").OccursOnce();
            Mock.NonPublic.Arrange(vm, "LoadAnswerProcessInfo").OccursNever();

            //Act: Assign SelectedChecklistField
            vm.SelectedChecklistField = null;

            //Assert
            Assert.IsNull(vm.SelectedChecklistField);
            Assert.AreEqual(string.Empty, vm.Data.ChecklistFieldName);

            Mock.NonPublic.Assert(vm, "RaisePropertyChanged", Occurs.Once(), "SelectedChecklistField");
            Mock.NonPublic.Assert(vm, "LoadAnswerProcessInfo", Occurs.Never());
        }
コード例 #9
0
        public void PropertiesTests()
        {
            var vm = new GageRROptionsStepViewModel(Mock.Create<GageRROptionsStepEdit>(), Mock.Create<StepInfo>(), Mock.Create<ProcessFieldViewModel>());
            TestsHelper.TestPublicDeclaredPropertiesGetSet(vm, true);

            var vmPrivateAccessor = new PrivateAccessor(vm);

            Assert.IsNotNull(vm.SelectedProcessChecklistFields);
            Assert.IsNotNull(vm.AnswerProcessSampleFields);
            Assert.IsNotNull(vm.AnswerProcessTextFields);
            Assert.IsNotNull(vm.AnswerProcessNumericFields);

            Assert.IsNotNull(vm.Filters);

            var source = new List<ProcessField>();
            ((CollectionViewSource)vmPrivateAccessor.GetField("_selectedProcessChecklistFields")).Source = source;
            ((CollectionViewSource)vmPrivateAccessor.GetField("_answerProcessSampleFields")).Source = source;
            ((CollectionViewSource)vmPrivateAccessor.GetField("_answerProcessTextFields")).Source = source;
            ((CollectionViewSource)vmPrivateAccessor.GetField("_answerProcessNumericFields")).Source = source;

            ((IList<IFilter>)vmPrivateAccessor.GetField("_filters")).Add(Mock.Create<IFilter>(Behavior.Loose));

            Assert.AreEqual(source, vm.SelectedProcessChecklistFields.Source);
            Assert.AreEqual(source, vm.AnswerProcessSampleFields.Source);
            Assert.AreEqual(source, vm.AnswerProcessTextFields.Source);
            Assert.AreEqual(source, vm.AnswerProcessNumericFields.Source);

            Assert.AreEqual(1, vm.Filters.Count);
        }
コード例 #10
0
        public void SelectedProcessSetter_NewValueIsNull_Test()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);
            Mock.Arrange(() => stepEditMock.ChecklistFieldName).CallOriginal(); stepEditMock.ChecklistFieldName = "Checklist";
            Mock.Arrange(() => stepEditMock.SampleFieldName).CallOriginal(); stepEditMock.SampleFieldName = "Sample";
            Mock.Arrange(() => stepEditMock.AppraiserFieldName).CallOriginal(); stepEditMock.AppraiserFieldName = "Appraiser";
            Mock.Arrange(() => stepEditMock.TrialFieldName).CallOriginal(); stepEditMock.TrialFieldName = "Trial";

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var vmPrivateAccessor = new PrivateAccessor(vm);
            vmPrivateAccessor.SetField("_selectedProcess", Mock.Create<PublishedProcessInfo>(Behavior.Loose));

            //Mock field info object
            var fieldInfoMock = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => vm.SelectedProcessAvailableFields).Returns(new ObservableCollection<FieldInfo> { fieldInfoMock });
            Mock.Arrange(() => vm.AnswerProcessAvailableFields).Returns(new ObservableCollection<FieldInfo> { fieldInfoMock });

            Assert.IsNotNull(vm.Data);

            //Act: Assign SelectedProcess property
            vm.SelectedProcess = null;
            Assert.IsNull(vm.SelectedProcess);

            //Assert
            Assert.AreEqual(vm.SelectedProcessAvailableFields.Count, 0);
            Assert.AreEqual(vm.AnswerProcessAvailableFields.Count, 0);

            Assert.AreEqual(string.Empty, vm.Data.ChecklistFieldName);
            Assert.AreEqual(string.Empty, vm.Data.SampleFieldName);
            Assert.AreEqual(string.Empty, vm.Data.AppraiserFieldName);
            Assert.AreEqual(string.Empty, vm.Data.TrialFieldName);

            Assert.IsNull(vm.Data.GageRRSourceProcessId);
            Assert.AreEqual(string.Empty, vm.Data.GageRRSourceProcessSysName);

            Mock.NonPublic.Assert(vm, "SetupSelectedProcess", Occurs.Never());
            Mock.NonPublic.Assert(vm, "RaisePropertyChanged", Occurs.Once(), "SelectedProcess");
        }
コード例 #11
0
        public void OnChecklistInfoLoaded_SetDataProcessName_MethodTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var vmPrivateAccessor = new PrivateAccessor(vm);

            //Arrange
            var fieldInfoMock = Mock.Create<ChecklistFieldInfo>(Behavior.Loose);
            Mock.Arrange(() => fieldInfoMock.CrossRefProcessSystemName).Returns("AnswerProcessSysName");
            var result = new DataPortalResult<ChecklistFieldInfo>(fieldInfoMock, null, null);

            var processInfoMock = Mock.Create<PublishedProcessInfo>(Behavior.Loose);
            Mock.Arrange(() => processInfoMock.SystemName).Returns("AnswerProcessSysName");
            Mock.Arrange(() => vm.AvailableProcesses).Returns(new List<PublishedProcessInfo> { processInfoMock });

            Mock.NonPublic.Arrange(vm, "SetupAnswerProcess", ArgExpr.IsAny<int>()).DoNothing().OccursOnce();
            Mock.NonPublic.Arrange(vm, "LoadAnswerProcessFilters", ArgExpr.IsAny<int>()).DoNothing().OccursOnce();

            //Act: Call OnChecklistInfoLoaded method            
            vmPrivateAccessor.CallMethod("OnChecklistInfoLoaded", result);

            //Assert
            Assert.AreEqual("AnswerProcessSysName", vm.Data.GageRRDataProcessSysName);
            Mock.NonPublic.Assert(vm, "SetupAnswerProcess", ArgExpr.IsAny<int>());
            Mock.NonPublic.Assert(vm, "LoadAnswerProcessFilters", ArgExpr.IsAny<int>());
        }
コード例 #12
0
        public void OnAnswerProcessFieldsRetrieved_Filtering_MethodTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var vmPrivateAccessor = new PrivateAccessor(vm);

            //Arrange            
            var fieldTypeInfo1 = Mock.Create<FieldTypeInfo>(Behavior.Loose);
            Mock.Arrange(() => fieldTypeInfo1.ColumnType).Returns(ColumnTypes.Sample);
            var field1 = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => field1.FieldType).Returns(fieldTypeInfo1);

            var fieldTypeInfo2 = Mock.Create<FieldTypeInfo>(Behavior.Loose);
            Mock.Arrange(() => fieldTypeInfo2.ColumnType).Returns(ColumnTypes.String);
            var field2 = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => field2.FieldType).Returns(fieldTypeInfo2);

            var fieldTypeInfo3 = Mock.Create<FieldTypeInfo>(Behavior.Loose);
            Mock.Arrange(() => fieldTypeInfo3.ColumnType).Returns(ColumnTypes.Integer);
            var field3 = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => field3.FieldType).Returns(fieldTypeInfo3);

            var result = new DataPortalResult<FieldList>(null, null, null);
            Mock.Arrange(() => result.Object).ReturnsCollection(new List<FieldInfo> { field1, field2, field3 });

            //var viewMock = Mock.Create<ICollectionView>();
            //Mock.Arrange(() => viewMock.Refresh()).IgnoreInstance().DoNothing().MustBeCalled();

            //Act: Call OnAnswerProcessFieldsRetrieved method
            vmPrivateAccessor.CallMethod("OnAnswerProcessFieldsRetrieved", result);

            //Assert
            Assert.IsNotNull(vm.AnswerProcessAvailableFields);
            Assert.AreEqual(3, vm.AnswerProcessAvailableFields.Count);

            var view = vm.AnswerProcessSampleFields.View;
            Assert.AreEqual(1, view.CountItems());
            view.MoveCurrentToFirst();
            Assert.AreEqual(ColumnTypes.Sample, ((FieldInfo)view.CurrentItem).FieldType.ColumnType);

            view = vm.AnswerProcessTextFields.View;
            Assert.AreEqual(1, view.CountItems());
            view.MoveCurrentToFirst();
            Assert.AreEqual(ColumnTypes.String, ((FieldInfo)view.CurrentItem).FieldType.ColumnType);

            view = vm.AnswerProcessNumericFields.View;
            Assert.AreEqual(1, view.CountItems());
            view.MoveCurrentToFirst();
            Assert.AreEqual(ColumnTypes.Integer, ((FieldInfo)view.CurrentItem).FieldType.ColumnType);

            //Mock.Assert(() => viewMock.Refresh(), Occurs.Exactly(2));
        }
コード例 #13
0
        public void TestFieldDefaultValues()
        {
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>();

            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var privateAccessor = new PrivateAccessor(vm);

            Assert.IsNull(privateAccessor.GetField("_selectedProcess"));
            Assert.IsNull(privateAccessor.GetField("_selectedChecklistField"));

            Assert.IsNotNull(privateAccessor.GetField("_selectedProcessChecklistFields"));
            Assert.IsNotNull(privateAccessor.GetField("_answerProcessSampleFields"));
            Assert.IsNotNull(privateAccessor.GetField("_answerProcessTextFields"));
            Assert.IsNotNull(privateAccessor.GetField("_answerProcessNumericFields"));

            Assert.IsNull(privateAccessor.GetField("_answerProcessFitlersInfo"));
            Assert.IsNotNull(privateAccessor.GetField("_filters"));
            Assert.IsNull(privateAccessor.GetField("_selectedFilter"));
            Assert.AreEqual(string.Empty, privateAccessor.GetField("_filterDefinition"));

            Assert.IsNotNull(privateAccessor.GetField("_udpList"));
            Assert.IsNull(privateAccessor.GetField("_processedFilter"));
            Assert.IsTrue((bool)privateAccessor.GetField("_isLoading"));
        }
コード例 #14
0
        public void OnAnswerProcessFieldsRetrieved_FieldValidationFailed_MethodTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var vmPrivateAccessor = new PrivateAccessor(vm);

            //Arrange
            var field1 = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => field1.ColumnType).Returns(ColumnTypes.SPCChart);

            var field2 = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => field2.ColumnType).Returns(ColumnTypes.Reference);

            var result = new DataPortalResult<FieldList>(null, null, null);
            Mock.Arrange(() => result.Object).ReturnsCollection(new List<FieldInfo> { field1, field2 });

            //var viewMock = Mock.Create<ICollectionView>();
            //Mock.Arrange(() => viewMock.Refresh()).IgnoreInstance().DoNothing().MustBeCalled();

            //Act: Call OnAnswerProcessFieldsRetrieved method
            vmPrivateAccessor.CallMethod("OnAnswerProcessFieldsRetrieved", result);

            //Assert
            Assert.IsNotNull(vm.AnswerProcessAvailableFields);
            Assert.AreEqual(0, vm.AnswerProcessAvailableFields.Count);

            Assert.AreEqual(
                vm.AnswerProcessAvailableFields,
                ((CollectionViewSource)vmPrivateAccessor.GetField("_answerProcessSampleFields")).Source);
            Assert.AreEqual(
                vm.AnswerProcessAvailableFields,
                ((CollectionViewSource)vmPrivateAccessor.GetField("_answerProcessTextFields")).Source);
            Assert.AreEqual(
                vm.AnswerProcessAvailableFields,
                ((CollectionViewSource)vmPrivateAccessor.GetField("_answerProcessNumericFields")).Source);

            //Mock.Assert(() => viewMock.Refresh(), Occurs.Once());
        }
コード例 #15
0
        public void OnFieldListLoaded_Filtering_MethodTest()
        {
            //Mock step edit
            var stepEditMock = Mock.Create<GageRROptionsStepEdit>(Behavior.CallOriginal);

            //Create view model
            var vm = new GageRROptionsStepViewModel(stepEditMock, null, null);
            var vmPrivateAccessor = new PrivateAccessor(vm);

            //Arrange            
            var fieldTypeInfo1 = Mock.Create<FieldTypeInfo>(Behavior.Loose);
            Mock.Arrange(() => fieldTypeInfo1.ColumnType).Returns(ColumnTypes.Numeric);
            var field1 = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => field1.FieldType).Returns(fieldTypeInfo1);

            var fieldTypeInfo2 = Mock.Create<FieldTypeInfo>(Behavior.Loose);
            Mock.Arrange(() => fieldTypeInfo2.ColumnType).Returns(ColumnTypes.Checklist);
            var field2 = Mock.Create<FieldInfo>(Behavior.Loose);
            Mock.Arrange(() => field2.FieldType).Returns(fieldTypeInfo2);

            var result = new DataPortalResult<FieldList>(null, null, null);
            Mock.Arrange(() => result.Object).ReturnsCollection(new List<FieldInfo> { field1, field2 });

            //var viewMock = Mock.Create<ICollectionView>();
            //Mock.Arrange(() => viewMock.Refresh()).IgnoreInstance().DoNothing().MustBeCalled();

            //Act: Call OnFieldListLoaded method
            //SelectedChecklistField remains unset
            vmPrivateAccessor.CallMethod("OnFieldListLoaded", result);

            //Assert
            Assert.IsNotNull(vm.SelectedProcessAvailableFields);
            Assert.AreEqual(2, vm.SelectedProcessAvailableFields.Count);

            Assert.AreEqual(
                vm.SelectedProcessAvailableFields,
                ((CollectionViewSource)vmPrivateAccessor.GetField("_selectedProcessChecklistFields")).Source);

            var view = vm.SelectedProcessChecklistFields.View;
            Assert.AreEqual(1, view.CountItems());

            view.MoveCurrentToFirst();
            Assert.AreEqual(ColumnTypes.Checklist, ((FieldInfo)view.CurrentItem).FieldType.ColumnType);
            Assert.IsNull(vm.SelectedChecklistField);


            //Arrange
            Mock.Arrange(() => field2.SystemName).Returns("ChecklistFieldSystemName");
            vm.Data.ChecklistFieldName = "ChecklistFieldSystemName";

            //Act: Call OnFieldListLoaded method
            //SelectedChecklistField gets the value
            vmPrivateAccessor.CallMethod("OnFieldListLoaded", result);

            //Assert
            Assert.IsNotNull(vm.SelectedChecklistField);
            Assert.AreEqual(field2, vm.SelectedChecklistField);

            //Mock.Assert(() => viewMock.Refresh(), Occurs.Exactly(2));
        }