Exemplo n.º 1
0
            private static CustomerVMDescriptor CreateDescriptor(
                RefreshControllerBehaviorMock refreshControllerBehavior,
                bool useMockBehaviors
                )
            {
                return(VMDescriptorBuilder
                       .OfType <CustomerVMDescriptor>()
                       .For <CustomerVM>()
                       .WithProperties((d, c) => {
                    var b = c.GetPropertyBuilder();

                    d.Name = b.Property.Of <string>();
                    d.Address = b.Property.Of <string>();
                    d.Rating = b.Property.Of <int>();
                })
                       .WithValidators(b => {
                    b.Check(x => x.Name)
                    .Custom(args => args.Owner.Results.PerformValidation(args));
                    b.Check(x => x.Rating)
                    .Custom(args => args.Owner.Results.PerformValidation(args));
                })
                       .WithBehaviors(b => {
                    if (useMockBehaviors)
                    {
                        if (refreshControllerBehavior != null)
                        {
                            b.AddBehavior(refreshControllerBehavior);
                        }
                    }
                })
                       .Build());
            }
Exemplo n.º 2
0
        public void DependencyOnTargetPropertiesOfDescendantCollection_RefreshesAllPropertiesOfAllViewModelsInCollection()
        {
            var refreshMock         = new RefreshControllerBehaviorMock();
            var projectVMDescriptor = ProjectVM.CreateDescriptor(refreshMock, true);
            var employeeVM          = CreateEmployeeVM(
                b => b
                .OnChangeOf
                .Properties(x => x.Name)
                .Refresh
                .Descendant(x => x.Projects)
                .Properties(x => x.Title, x => x.Customer),
                projectVMDescriptor
                );

            var projectVM1 = CreateProjectVM();
            var projectVM2 = CreateProjectVM();

            employeeVM.Projects.Add(projectVM1);
            employeeVM.Projects.Add(projectVM2);

            employeeVM.Name = "TriggerChange";

            var expectedRefreshedProperties = new IVMPropertyDescriptor[] {
                projectVM1.Descriptor.Title,
                projectVM1.Descriptor.Customer,
                projectVM1.Descriptor.Title,
                projectVM1.Descriptor.Customer,
            };

            var refreshedProperties = refreshMock.RefreshedProperties;

            CollectionAssert.AreEquivalent(expectedRefreshedProperties, refreshedProperties);
        }
Exemplo n.º 3
0
            internal static ProjectVMDescriptor CreateDescriptor(
                RefreshControllerBehaviorMock refreshControllerBehavior,
                bool useMockBehaviors
                )
            {
                return(VMDescriptorBuilder
                       .OfType <ProjectVMDescriptor>()
                       .For <ProjectVM>()
                       .WithProperties((d, c) => {
                    var b = c.GetPropertyBuilder();

                    d.Title = b.Property.Of <string>();
                    d.Customer = b.VM.Of <CustomerVM>();
                })
                       .WithValidators(b => {
                    b.EnableParentValidation(x => x.Title);
                    b.Check(x => x.Title)
                    .Custom(args => args.Owner.Results.PerformValidation(args));
                    b.Check(x => x.Customer)
                    .Custom(args => args.Owner.Results.PerformValidation(args));
                })
                       .WithBehaviors(b => {
                    if (useMockBehaviors)
                    {
                        if (refreshControllerBehavior != null)
                        {
                            b.AddBehavior(refreshControllerBehavior);
                        }
                    }
                })
                       .Build());
            }
Exemplo n.º 4
0
        public void DependencyOnTargetPropertiesOfDescendantOfDescendantCollection_RefreshesSpecifiedPropertiesDescendantsInCollection()
        {
            var refreshMock         = new RefreshControllerBehaviorMock();
            var projectVMDescriptor = ProjectVM.CreateDescriptor(refreshMock, true);

            var employeeVM = CreateEmployeeVM(
                b => b
                .OnChangeOf
                .Properties(x => x.Name)
                .Refresh
                .Descendant(x => x.Projects)
                .Descendant(x => x.Customer)
                .Properties(x => x.Name, x => x.Rating),
                projectVMDescriptor
                );

            var projectVM1 = CreateProjectVM();
            var projectVM2 = CreateProjectVM();

            employeeVM.Projects.Add(projectVM1);
            employeeVM.Projects.Add(projectVM2);

            var customerVM1 = CreateCustomerVM();

            customerVM1.Name = "aValidName";
            var customerVM2 = CreateCustomerVM();

            customerVM2.Name = "aValidName";

            projectVM1.Customer = customerVM1;
            projectVM2.Customer = customerVM2;

            employeeVM.Name = "TriggerChange";

            var expectedRefreshedPropertiesOnCustomer1 = new IVMPropertyDescriptor[] {
                customerVM1.Descriptor.Name,
                customerVM1.Descriptor.Rating
            };

            var expectedRefreshedPropertiesOnCustomer2 = new IVMPropertyDescriptor[] {
                customerVM2.Descriptor.Name,
                customerVM2.Descriptor.Rating
            };

            var refreshedPropertiesOnCustomer1 = customerVM1.RefreshControllerBehaviorMock.RefreshedProperties;
            var refreshedPropertiesOnCustomer2 = customerVM2.RefreshControllerBehaviorMock.RefreshedProperties;

            CollectionAssert.AreEquivalent(
                expectedRefreshedPropertiesOnCustomer1,
                refreshedPropertiesOnCustomer1
                );
            CollectionAssert.AreEquivalent(
                expectedRefreshedPropertiesOnCustomer2,
                refreshedPropertiesOnCustomer2
                );
        }
Exemplo n.º 5
0
        private EmployeeVM CreateEmployeeVM(
            Action <IVMDependencyBuilder <EmployeeVM, EmployeeVMDescriptor> > dependencyConfigurationAction,
            ProjectVMDescriptor projectVMDescriptor             = null,
            RefreshControllerBehaviorMock refreshControllerMock = null
            )
        {
            refreshControllerMock = refreshControllerMock ?? new RefreshControllerBehaviorMock();

            projectVMDescriptor = projectVMDescriptor ?? ProjectVM.CreateDescriptor(null, false);
            return(new EmployeeVM(dependencyConfigurationAction, projectVMDescriptor, true, Results, refreshControllerMock));
        }
Exemplo n.º 6
0
 private CustomerVM(
     RefreshControllerBehaviorMock refreshControllerBehavior,
     bool useMockBehaviors)
     : base(
         CreateDescriptor(
             refreshControllerBehavior,
             useMockBehaviors
             )
         )
 {
     RefreshControllerBehaviorMock = refreshControllerBehavior;
 }
Exemplo n.º 7
0
        [Ignore] // TODO: This currently doesn't work, because the property that has changed is never refreshed.
        public void DependencyTargetingSelf_RefreshesSelf()
        {
            var refreshMock = new RefreshControllerBehaviorMock();

            var employeeVM = CreateEmployeeVM(
                b => b
                .OnChangeOf
                .Self
                .OrAnyDescendant
                .Refresh
                .Self(),
                refreshControllerMock: refreshMock
                );

            employeeVM.Name = "TriggerChange";

            CollectionAssert.AreEquivalent(new[] { employeeVM }, refreshMock.RefreshedViewModels);
        }
Exemplo n.º 8
0
 public EmployeeVM(
     Action <IVMDependencyBuilder <EmployeeVM, EmployeeVMDescriptor> > dependencyConfigurationAction,
     ProjectVMDescriptor projectVMDescriptor,
     bool useMockBehaviors,
     ValidatorMockConfigurationFluent results,
     RefreshControllerBehaviorMock refreshControllerBehavior
     )
     : base(
         CreateDescriptor(
             dependencyConfigurationAction,
             projectVMDescriptor,
             refreshControllerBehavior,
             useMockBehaviors
             )
         )
 {
     RefreshControllerBehaviorMock = refreshControllerBehavior;
     Results = results;
 }
Exemplo n.º 9
0
            private static EmployeeVMDescriptor CreateDescriptor(
                Action <IVMDependencyBuilder <EmployeeVM, EmployeeVMDescriptor> > dependencyConfigurationAction,
                ProjectVMDescriptor projectVMDescriptor,
                RefreshControllerBehaviorMock refreshControllerBehavior,
                bool useMockBehaviors
                )
            {
                return(VMDescriptorBuilder
                       .OfType <EmployeeVMDescriptor>()
                       .For <EmployeeVM>()
                       .WithProperties((d, c) => {
                    var b = c.GetPropertyBuilder();

                    d.Name = b.Property.Of <string>();
                    d.Projects = b.Collection.Of <ProjectVM>(projectVMDescriptor);
                    d.SelectedProject = b.VM.Of <ProjectVM>();
                })
                       .WithValidators(b => {
                    b.Check(x => x.Name)
                    .Custom((args) => {
                        if (args.Owner.InvalidateNameProperty)
                        {
                            args.AddError("Test triggered failure");
                        }
                    });
                    b.Check(x => x.SelectedProject)
                    .Custom(args => args.Owner.Results.PerformValidation(args));
                })
                       .WithDependencies(
                           dependencyConfigurationAction
                           )
                       .WithBehaviors(b => {
                    if (useMockBehaviors)
                    {
                        if (refreshControllerBehavior != null)
                        {
                            b.AddBehavior(refreshControllerBehavior);
                        }
                    }
                })
                       .Build());
            }
Exemplo n.º 10
0
        public void DependencyOnTargetDescendantOfDescendantCollection_RefreshesAllViewModelsInCollection()
        {
            var refreshMock         = new RefreshControllerBehaviorMock();
            var projectVMDescriptor = ProjectVM.CreateDescriptor(refreshMock, true);

            var employeeVM = CreateEmployeeVM(
                b => b
                .OnChangeOf
                .Properties(x => x.Name)
                .Refresh
                .Descendant(x => x.Projects)
                .Descendant(x => x.Customer),
                projectVMDescriptor
                );

            var projectVM1 = CreateProjectVM();
            var projectVM2 = CreateProjectVM();

            employeeVM.Projects.Add(projectVM1);
            employeeVM.Projects.Add(projectVM2);

            var customerVM1 = CreateCustomerVM();

            customerVM1.Name = "aValidName";
            var customerVM2 = CreateCustomerVM();

            customerVM2.Name = "aValidName";

            projectVM1.Customer = customerVM1;
            projectVM2.Customer = customerVM2;

            employeeVM.Name = "TriggerChange";

            var expectedRefreshedCustomers = employeeVM.Projects.Select(x => x.Customer).ToArray();

            var refreshedViewModelsOnCustomer1 = customerVM1.RefreshControllerBehaviorMock.RefreshedViewModels;
            var refreshedViewModelsOnCustomer2 = customerVM2.RefreshControllerBehaviorMock.RefreshedViewModels;

            Assert.IsTrue(refreshedViewModelsOnCustomer1.Contains(customerVM1));
            Assert.IsTrue(refreshedViewModelsOnCustomer2.Contains(customerVM2));
        }
Exemplo n.º 11
0
        public void DependencyOnPropertyTarget_RefreshesProperty()
        {
            var refreshControllerBehaviorMock = new RefreshControllerBehaviorMock();

            var employeeVM = CreateEmployeeVM(
                b => b
                .OnChangeOf
                .Properties(x => x.SelectedProject)
                .Refresh
                .Properties(x => x.Name)
                );

            var changeTrigger = CreateProjectVM();

            employeeVM.SelectedProject = changeTrigger;

            var refreshedProperties       = employeeVM.RefreshControllerBehaviorMock.RefreshedProperties;
            var expectedRefreshedProperty = employeeVM.Descriptor.Name;

            Assert.IsTrue(refreshedProperties.Contains(expectedRefreshedProperty));
        }
Exemplo n.º 12
0
        public void DependencyOnViewModelTarget_RefreshesViewModel()
        {
            var refreshControllerBehaviorMock = new RefreshControllerBehaviorMock();

            var employeeVM = CreateEmployeeVM(
                b => b
                .OnChangeOf
                .Properties(x => x.Name)
                .Refresh
                .Properties(x => x.SelectedProject)
                );

            var projectVM = CreateProjectVM();

            employeeVM.SelectedProject = projectVM;

            employeeVM.Name = "TriggerChange";

            var refreshedViewModels = projectVM.RefreshControllerBehaviorMock.RefreshedViewModels;

            Assert.IsTrue(refreshedViewModels.Contains(projectVM));
        }
Exemplo n.º 13
0
        public void DependencyOnCollectionTarget_RefreshesAllViewModelsInCollection()
        {
            var refreshMock         = new RefreshControllerBehaviorMock();
            var projectVMDescriptor = ProjectVM.CreateDescriptor(refreshMock, true);

            var employeeVM = CreateEmployeeVM(
                b => b
                .OnChangeOf
                .Properties(x => x.Name)
                .Refresh
                .Descendant(x => x.Projects),
                projectVMDescriptor
                );

            var projectVM1 = CreateProjectVM();
            var projectVM2 = CreateProjectVM();

            employeeVM.Projects.Add(projectVM1);
            employeeVM.Projects.Add(projectVM2);

            employeeVM.Name = "TriggerChange";

            CollectionAssert.AreEquivalent(employeeVM.Projects, refreshMock.RefreshedViewModels);
        }