public void LockSortAndGroupControls()
        {
            // arrange
            Mock.Arrange(() => new LayoutSetupViewModel()).DoNothing();
            var vm = new LayoutSetupViewModel();

            var column = Mock.Create<GridColumnViewModel>(Behavior.CallOriginal);
            column.CanChangeGroupLevel = true;
            column.CanChangeSortDirection = true;
            column.CanChangeSortLevel = true;

            Mock.Arrange(() => vm.AvailableFields).Returns(new ObservableCollection<GridColumnViewModel>());
            vm.AvailableFields.Add(column);

            var field = Mock.Create<GridColumnViewModel>(Behavior.CallOriginal);
            field.CanChangeGroupLevel = true;
            field.CanChangeSortDirection = true;
            field.CanChangeSortLevel = true;

            Mock.Arrange(() => vm.Columns).Returns(new ObservableCollection<IGridColumn>());
            vm.Columns.Add(field);

            // act
            vm.LockSortAndGroupControls();

            // assert
            Assert.IsFalse(column.CanChangeGroupLevel);
            Assert.IsFalse(column.CanChangeSortDirection);
            Assert.IsFalse(column.CanChangeSortLevel);

            Assert.IsFalse(field.CanChangeGroupLevel);
            Assert.IsFalse(field.CanChangeSortDirection);
            Assert.IsFalse(field.CanChangeSortLevel);
        }
        public void ValidateName_WhenNameIsEmpty_AddsToErrors()
        {
            //Arrange
            var classUnderTest = new LayoutSetupViewModel();
            classUnderTest.Name = string.Empty;

            //Act
            classUnderTest.ValidateName();

            //Assert
            var errors = (ICollection)classUnderTest.GetErrors("Name");
            Assert.AreEqual(1, errors.Count);
        }
        /// <summary>
        /// Columns_s the collection changed.
        /// </summary>
        /// <param name="layoutSetupViewModel">The layout setup view model.</param>
        /// <param name="o">The o.</param>
        /// <param name="arg3">The <see cref="NotifyCollectionChangedEventArgs"/> instance containing the event data.</param>
        private static void Columns_CollectionChanged(LayoutSetupViewModel layoutSetupViewModel, object o, NotifyCollectionChangedEventArgs arg3)
        {
            if (!layoutSetupViewModel._loadingColumns)
            {
                if (layoutSetupViewModel.Parent != null)
                {
                    layoutSetupViewModel.Parent.NotifyLayoutChanged();
                }

                layoutSetupViewModel.ReSortAvailableFields();
            }
        }
        /// <summary>
        /// Available fields collection changed.
        /// </summary>
        /// <param name="layoutSetupViewModel">The layout setup view model.</param>
        /// <param name="o">The o.</param>
        /// <param name="e">The <see cref="NotifyCollectionChangedEventArgs"/> instance containing the event data.</param>
        private static void AvailableFields_CollectionChanged(LayoutSetupViewModel layoutSetupViewModel, object o, NotifyCollectionChangedEventArgs e)
        {
            if (!layoutSetupViewModel._loadingAvailableFields && e.Action == NotifyCollectionChangedAction.Add)
            {
                var index = 0;
                layoutSetupViewModel._loadingColumns = true;
                foreach (var columnViewModel in (ObservableCollection<GridColumnViewModel>)o)
                {
                    var column = layoutSetupViewModel.Columns.FirstOrDefault(c => c.SystemName == columnViewModel.SystemName);
                    if (column != null)
                    {
                        column.Index = index;
                        layoutSetupViewModel.Columns.Remove(column);
                        layoutSetupViewModel.Columns.Insert(index, column);
                        index++;
                    }
                }
                layoutSetupViewModel._loadingColumns = false;

                if (layoutSetupViewModel.Parent != null)
                    layoutSetupViewModel.Parent.NotifyLayoutChanged();
            }
        }
 public void PropertiesTest()
 {
     var classUnderTest = new LayoutSetupViewModel();
     TestsHelper.TestPublicDeclaredPropertiesGetSet(classUnderTest, true);
 }