/// <summary> /// Returns entity that owns a property /// </summary> /// <param name="dataModel">The contract</param> /// <param name="property">The property</param> /// <returns></returns> public static ContractEntity GetEntityOf(this ContractDataModel dataModel, ContractProperty property) { if (dataModel == null) { throw new ArgumentNullException(nameof(dataModel)); } if (property == null) { throw new ArgumentNullException(nameof(property)); } foreach (var entity in dataModel.Entities) { foreach (var entityProperty in entity.PrimitiveProperties) { if (entityProperty == property) { return(entity); } } foreach (var entityProperty in entity.ReferenceProperties) { if (entityProperty == property) { return(entity); } } } throw new ArgumentException("No suitable entity found"); }
ContractDataModel GetExampleDataModel() { var dataModel = new ContractDataModel(); var entity2 = new ContractEntity() { Id = "entity-2", Name = "Entity 2", }; var entity1 = new ContractEntity() { Id = "entity-1", Name = "Entity 1", PrimitiveProperties = new List <PrimitiveContractProperty>() { new PrimitiveContractProperty() { Id = "property-1", Name = "Property 1", IsMandatory = true, Type = PrimitiveContractPropertyType.Number }, new PrimitiveContractProperty() { Id = "property-2", Name = "Property 2", IsMandatory = false, Type = PrimitiveContractPropertyType.NumberCollection }, }, ReferenceProperties = new List <ReferenceContractProperty>() { new ReferenceContractProperty() { Id = "property-3", Name = "Property 3", IsMandatory = true, Entity = entity2 } } }; dataModel.Entities.Add(entity1); dataModel.Entities.Add(entity2); return(dataModel); }
void AssertExampleDataModel(ContractDataModel dataModel) { var entity1 = dataModel.Entities.Where(e => e.Id == "entity-1").Single(); var entity2 = dataModel.Entities.Where(e => e.Id == "entity-2").Single(); Assert.AreEqual("Entity 1", entity1.Name); Assert.AreEqual("property-1", entity1.PrimitiveProperties[0].Id); Assert.AreEqual("Property 1", entity1.PrimitiveProperties[0].Name); Assert.IsTrue(entity1.PrimitiveProperties[0].IsMandatory); Assert.AreEqual(PrimitiveContractPropertyType.Number, entity1.PrimitiveProperties[0].Type); Assert.AreEqual("property-2", entity1.PrimitiveProperties[1].Id); Assert.AreEqual("Property 2", entity1.PrimitiveProperties[1].Name); Assert.IsFalse(entity1.PrimitiveProperties[1].IsMandatory); Assert.AreEqual(PrimitiveContractPropertyType.NumberCollection, entity1.PrimitiveProperties[1].Type); Assert.AreEqual("property-3", entity1.ReferenceProperties[0].Id); Assert.AreEqual("Property 3", entity1.ReferenceProperties[0].Name); Assert.IsTrue(entity1.ReferenceProperties[0].IsMandatory); Assert.AreEqual(entity2, entity1.ReferenceProperties[0].Entity); Assert.AreEqual("entity-2", entity1.ReferenceProperties[0].EntityId); }