public void RelatedEntities_ProxiesToService() { var entity = new Entity("parent"); const string attributeName = "children"; var relatedEntities = new List <Entity>() { new Entity("mock") }; _mockService.Setup(mock => mock.RelatedEntities(entity, attributeName)).Returns(relatedEntities); var result = _crm.RelatedEntities(entity, attributeName, "mock"); result.Should().BeEquivalentTo(relatedEntities); }
private void MapRelationshipAttributesFromEntity(Entity entity, ICrmService crm, IValidatorFactory validatorFactory) { foreach (var property in GetProperties(this)) { var attribute = EntityRelationshipAttribute(property); if (attribute == null) { continue; } var relatedEntityAttribute = (EntityAttribute)Attribute.GetCustomAttribute(attribute.Type, typeof(EntityAttribute)); var relatedEntities = crm.RelatedEntities(entity, attribute.Name, relatedEntityAttribute.LogicalName).ToList(); if (!relatedEntities.Any()) { continue; } var relatedModels = relatedEntities.Select(e => Activator.CreateInstance(attribute.Type, e, crm, validatorFactory)); if (typeof(IEnumerable).IsAssignableFrom(property.PropertyType)) { var list = NewListOfType(attribute.Type); foreach (var model in relatedModels) { list.Add(model); } property.SetValue(this, list); } else { property.SetValue(this, relatedModels.FirstOrDefault()); } } }