public void Matches_ChildViewModelPlusOptionalStepWithAnyStepsStep_MacthesPropertyOfChildChildViewModel() { var definition = PathDefinition .Empty .Append((EmployeeVMDescriptor x) => x.SelectedProject) .Append(new OptionalStep(new AnyStepsStep <ProjectVMDescriptor>())); var customerVM = new CustomerVM(); var projectVM = new ProjectVM(); projectVM.SetValue(x => x.SelectedCustomer, customerVM); var rootVM = new EmployeeVM(); rootVM.SetValue(x => x.SelectedProject, projectVM); var path = Path .Empty .Append(rootVM) .Append(rootVM.GetValue(x => x.SelectedProject)) .Append(projectVM.GetValue(x => x.SelectedCustomer)) .Append(CustomerVM.ClassDescriptor.Name); var match = definition.Matches(path); Assert.IsTrue(match.Success); }
public void GetDescendants_DesendantCollectionOverSeveralCollectionHierarchies_ReturnsLastCollection() { var path = PathDefinition .Empty .Append((EmployeeVMDescriptor x) => x.Projects) .Append((ProjectVMDescriptor x) => x.Customers); var customer11 = new CustomerVM(); var customer21 = new CustomerVM(); var customer31 = new CustomerVM(); var project1 = new ProjectVM(); project1.GetValue(x => x.Customers).Add(customer11); var project2 = new ProjectVM(); project2.GetValue(x => x.Customers).Add(customer21); var project3 = new ProjectVM(); project3.GetValue(x => x.Customers).Add(customer31); var expectedViewModels = new CustomerVM[] { customer11, customer21, customer31 }; var rootVM = new EmployeeVM(); var projects = rootVM.GetValue(x => x.Projects); projects.Add(project1); projects.Add(project2); projects.Add(project3); var descenantViewModels = path.GetDescendants(rootVM); CollectionAssert.AreEqual(expectedViewModels, descenantViewModels); }
public void GetDescendants_WhenOnlyLoadedIsTrue_DoesNotLoadDescendants() { var unloadedProject = new ProjectVM(); var loadedProject = new ProjectVM(); var selectedCustomer = new CustomerVM(); var customerItem = new CustomerVM(); loadedProject.SetValue(x => x.SelectedCustomer, selectedCustomer); loadedProject.GetValue(x => x.Customers).Add(customerItem); var rootVM = new EmployeeVM(); var projects = rootVM.GetValue(x => x.Projects); projects.Add(unloadedProject); projects.Add(loadedProject); var path = PathDefinition .Empty .Append((EmployeeVMDescriptor x) => x.Projects) .Append((ProjectVMDescriptor x) => x.SelectedCustomer); var descenantViewModels = path.GetLoadedDescendants(rootVM); CollectionAssert.AreEquivalent(new[] { selectedCustomer }, descenantViewModels); ViewModelAssert.IsNotLoaded(unloadedProject, x => x.SelectedCustomer); path = PathDefinition .Empty .Append((EmployeeVMDescriptor x) => x.Projects) .Append((ProjectVMDescriptor x) => x.Customers); descenantViewModels = path.GetLoadedDescendants(rootVM); CollectionAssert.AreEquivalent(new[] { customerItem }, descenantViewModels); ViewModelAssert.IsNotLoaded(unloadedProject, x => x.Customers); }