/// <summary>
 /// The create field vm.
 /// </summary>
 /// <param name="field">The field.</param>
 /// <param name="parentSection">The parent section.</param>
 /// <returns>The <see cref="ProcessFieldViewModel" />.</returns>
 public ProcessFieldViewModel CreateFieldVM(FieldEdit field, ProcessSectionViewModel parentSection)
 {
     var fieldVm = new ProcessFieldViewModel(field, parentSection);
     //DeploymentService.Container.ComposeParts(fieldVM);
     DeploymentService.Container.SatisfyImportsOnce(fieldVm);
     return fieldVm;
 }
 /// <summary>
 /// Creates the section vm.
 /// </summary>
 /// <param name="section">The section.</param>
 /// <returns>ProcessSectionViewModel.</returns>
 public ProcessSectionViewModel CreateSectionVM(ISectionEdit section)
 {
     var sectionVM = new ProcessSectionViewModel(section);
     //DeploymentService.Container.ComposeParts(sectionVM);
     DeploymentService.Container.SatisfyImportsOnce(sectionVM);
     return sectionVM;
 }
 public void NotifyPropertyChangedTests()
 {
     var vm = new ProcessSectionViewModel(Mock.Create<SectionEdit>(Behavior.Loose)) { TheProcessFieldsViewModel = new ProcessFieldsViewModel() };
     
     TestsHelper.TestPropertyWithNotifyPropertyChanged(vm, () => vm.IsSectionVisible);
     TestsHelper.TestPropertyWithNotifyPropertyChanged(vm, () => vm.IsSectionEditable);
 }
        public void GetNewFieldNameTest()
        {
            var section = new SectionEditMock(1, "Test section");
            var vm = new ProcessSectionViewModel(section);

            var pfvm = Mock.Create<ProcessFieldsViewModel>();
            Mock.Arrange(() => pfvm.SectionList).Returns(new ObservableCollection<ProcessSectionViewModel>());

            vm.RefreshAvailability();
        }
        public void PropertiesTest()
        {
            var section = new SectionEditMock(1, "Test section");
            var vm = new ProcessSectionViewModel(section);
            var pf = Mock.Create<ProcessFieldViewModel>();
           
            Mock.Arrange(() => pf.Model).Returns(new FieldEdit() { IsBase = true });

            vm.SelectedField = pf;

            Assert.IsTrue(vm.ReadOnly);
        }
        public void IsSecurityModeTest()
        {
            var section = new SectionEditMock(1, "Test section");
            var vm = new ProcessSectionViewModel(section);
            var pfvm = Mock.Create<ProcessFieldsViewModel>();
            vm.TheProcessFieldsViewModel = pfvm;

            Assert.IsFalse(vm.IsSecurityMode);

            var conf = Mock.Create<ProcessFieldConfigViewModel>();
            pfvm.SelectedFieldSecurityConfig = conf;
            pfvm.IsSecurityMode = true;
            Assert.IsTrue(vm.IsSecurityMode);
        }
        public void SectionListTest()
        {
            var section = new SectionEditMock(1, "Test section");
            var vm = new ProcessSectionViewModel(section);

            var pfvm = Mock.Create<ProcessFieldsViewModel>();
            pfvm.SectionList.Add(new ProcessSectionViewModel(section));
            vm.TheProcessFieldsViewModel = pfvm;

            Mock.Arrange(() => pfvm.SectionList).Returns(new ObservableCollection<ProcessSectionViewModel>() { new ProcessSectionViewModel(section) });
            Assert.IsNotNull(vm.SectionList);
            Assert.IsTrue(vm.SectionList.Count == 1);
        }
        public void AppendFieldDoNotPersistLayoutChangingIfTheFieldIsMovingToAnotherSection()
        {
            var section = new ProcessSectionViewModel(new SectionEdit()) { TheProcessFieldsViewModel = new ProcessFieldsViewModel() };

            var field = Mock.Create<FieldEdit>();
            var fieldVm = Mock.Create<ProcessFieldViewModel>();
            section.FieldFactory = new FieldViewModelFactory();

            Mock.Arrange(() => section.FieldFactory.CreateFieldVM(field, section)).Returns(() => fieldVm);

            Mock.NonPublic.Arrange(section, "AssignField", field).DoNothing();

            var eventCalled = false;
            Mock.Arrange(() => section.EventAggregator.Publish(Arg.IsAny<FieldListChangedEvent>())).DoInstead(() => eventCalled = true);
            section.AppendField(field);
            Assert.IsTrue(eventCalled);
            
            eventCalled = false;
            section.AppendField(field, true);
            Assert.IsFalse(eventCalled);
        }
        public void RemoveFieldDoNotPersistLayoutChangingIfTheFieldIsMovingToAnotherSection()
        {
            var section = new ProcessSectionViewModel(new SectionEdit()) { TheProcessFieldsViewModel = new ProcessFieldsViewModel { Model = Mock .Create<ProcessEdit>() } };
            var sectionList = new ProcessSections();
            var sectionFields = new ObservableCollection<ExpandableStepPropBag>();
            Mock.Arrange(() => section.Fields).Returns(sectionFields);
            Mock.Arrange(() => sectionList.RemoveField(Arg.IsAny<FieldEdit>())).DoNothing();
            Mock.Arrange(() => section.TheProcessFieldsViewModel.Model.SectionList).Returns(sectionList);
            var processFieldList = new Dictionary<Guid, Tuple<ProcessFieldViewModel, ExpandableStepPropBag>>();
            Mock.Arrange(() => section.TheProcessFieldsViewModel.FieldList).Returns(processFieldList);
            var field = new ProcessFieldViewModel(new FieldEdit(), section);

            var eventCalled = false;
            Mock.Arrange(() => section.EventAggregator.Publish(Arg.IsAny<FieldListChangedEvent>())).DoInstead(() => eventCalled = true);
            section.RemoveField(field);
            Assert.IsTrue(eventCalled);
            
            eventCalled = false;
            section.RemoveField(field, true);
            Assert.IsFalse(eventCalled);
        }
        public void MoveFieldDownCommandTest()
        {
            // Arrange.
            var field = new FieldEditMock("Text Field", "TextField", new FieldTypeInfo("Text", "String", true));
            var section = new SectionEditMock(1, "Test section");
            var pf = Mock.Create<ProcessFieldViewModel>();
            var pf2 = Mock.Create<ProcessFieldViewModel>();
            var pf3 = Mock.Create<ProcessFieldViewModel>();
            Mock.Arrange(() => pf.Model).Returns(new FieldEdit());
            Mock.Arrange(() => pf2.Model).Returns(new FieldEdit());
            Mock.Arrange(() => pf3.Model).Returns(new FieldEdit());
            section.FieldList.Add(field);

            var vm = new ProcessSectionViewModel(section);
            vm.FieldList.Add(pf);
            vm.FieldList.Add(pf3);
            vm.FieldList.Add(pf2);


            var pfvm = Mock.Create<ProcessFieldsViewModel>();
            Mock.Arrange(() => pfvm.Enabled).Returns(true);

            vm.TheProcessFieldsViewModel = pfvm;
            var ic = vm.MoveFieldDownCommand;

            var listboxM = new ListBoxItem { DataContext = pf };

            Assert.IsTrue(ic.CanExecute(listboxM));

            ic.Execute(listboxM);
            Assert.IsTrue(vm.FieldList[0].Model.Position == 0);
            Assert.IsTrue(vm.FieldList[1].Model.Position == 1);
        }
        public void ChangeFieldCommandTest()
        {
            // Arrange.
            var field = new FieldEditMock("Text Field", "TextField", new FieldTypeInfo("Text", "String", true));
            var section = new SectionEditMock(1, "Test section");

            section.FieldList.Add(field);

            var vm = new ProcessSectionViewModel(section);

            var pfvm = Mock.Create<ProcessFieldsViewModel>();

            vm.TheProcessFieldsViewModel = pfvm;
            var ic = vm.ChangeFieldCommand;

            Assert.IsTrue(ic.CanExecute(null));
            Assert.IsFalse(vm.TheProcessFieldsViewModel.IsFieldsFocused);

            ic.Execute(null);

            Assert.IsTrue(vm.TheProcessFieldsViewModel.IsFieldsFocused);
        }
        public void RemoveFieldCommandTest()
        {
            // Arrange.
            var field = new FieldEditMock("Text Field", "TextField", new FieldTypeInfo("Text", "String", true));
            var section = new SectionEditMock(1, "Test section");

            section.FieldList.Add(field);

            var vm = new ProcessSectionViewModel(section);

            var pfvm = Mock.Create<ProcessFieldsViewModel>();
            Mock.Arrange(() => pfvm.Enabled).Returns(true);
            vm.TheProcessFieldsViewModel = pfvm;

            var pf = Mock.Create<ProcessFieldViewModel>();

            Mock.Arrange(() => pf.Model).Returns(new FieldEdit() { IsBase = true });

            vm.SelectedField = pf;

            var ic = vm.RemoveFieldCommand;

            Assert.IsFalse(ic.CanExecute(null));

            Mock.Arrange(() => pf.Model).Returns(new FieldEdit() { IsBase = false });
            vm.SelectedField = pf;

            Assert.IsTrue(ic.CanExecute(null));
        }
        public void AddNewFieldCommandTest()
        {
            // Arrange.
            var field = new FieldEditMock("Text Field", "TextField", new FieldTypeInfo("Text", "String", true));
            var section = new SectionEditMock(1, "Test section");

            section.FieldList.Add(field);

            var vm = new ProcessSectionViewModel(section);
            var pfvm = Mock.Create<ProcessFieldsViewModel>();

            Mock.Arrange(() => pfvm.Enabled).Returns(true);
            Mock.Arrange(() => pfvm.UnitOfWork).Returns(new ProcessEditRetrieverMock(new ProcessEdit(), new FieldTypes()));

            vm.TheProcessFieldsViewModel = pfvm;
            var factory = Mock.Create<IFieldViewModelFactory>();

            vm.FieldFactory = factory;

            var ic = vm.AddNewFieldCommand;

            Assert.IsTrue(ic.CanExecute(null));
        }
        public void OnSecurityModeChangedTest()
        {
            // Arrange.
            var section = new SectionEditMock(1, "Test section");
            var vm = new ProcessSectionViewModel(section);
            var pf = Mock.Create<ProcessFieldViewModel>();

            vm.FieldList.Add(pf);
            vm.OnSecurityModeChanged();
            Assert.IsTrue(vm.FieldList.Count == 1);
        }
        public void PopulateFieldsTest()
        {
            var section = new SectionEditMock(1, "Test section");

            var vm = new ProcessSectionViewModel(section);

            var factory = Mock.Create<IFieldViewModelFactory>();

            vm.FieldFactory = factory;
            vm.PopulateFields(section);
            Assert.IsTrue(vm.FieldList != null);
        }
        public void IsSectionVisibleTest()
        {
            var section = new SectionEditMock(1, "Test section");
            var section2 = new SectionEditMock(3, "Test section");
            var vm = new ProcessSectionViewModel(section);

            var pfvm = Mock.Create<ProcessFieldsViewModel>();
            pfvm.SectionList.Add(new ProcessSectionViewModel(section2));

            vm.TheProcessFieldsViewModel = pfvm;

            Assert.IsNotNull(vm.SectionList);
            Assert.IsNotNull(vm.SectionList.Count == 1);
        }