/// <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");
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }