public void CanDocumentCreationWithExplicitMetadata()
        {
            var          createdDate       = new DateTime(2000, 1, 1);
            const string createdByUser     = "******";
            var          lastChangedDate   = new DateTime(2010, 1, 1);
            const string lastChangedByUser = "******";

            var entity = new TestEntity
            {
                CreatedDate       = createdDate,
                CreatedByUser     = createdByUser,
                LastChangedDate   = lastChangedDate,
                LastChangedByUser = lastChangedByUser
            };

            object[] values = CreateValues(entity);
            EntityMetadataUtils.DocumentCreation(entity, values, _properties);

            Assert.IsNotNull(entity.CreatedDate);
            Assert.IsNotNull(entity.CreatedByUser);
            Assert.IsNotNull(entity.LastChangedDate);
            Assert.IsNotNull(entity.LastChangedByUser);
            Assert.AreEqual(createdDate, entity.CreatedDate);
            Assert.AreEqual(createdByUser, entity.CreatedByUser);
            Assert.AreEqual(lastChangedDate, entity.LastChangedDate);
            Assert.AreEqual(lastChangedByUser, entity.LastChangedByUser);

            AssertEqualState(entity, values);
        }
Exemple #2
0
        public void Experiment_For_Saving_Entity_Metadata_To_File(string entityName)
        {
            var connectionString = ConfigurationManager.ConnectionStrings["CrmOrganisation"];
            var serviceProvider  = new CrmServiceProvider(new ExplicitConnectionStringProviderWithFallbackToConfig()
            {
                OrganisationServiceConnectionString = connectionString.ConnectionString
            },
                                                          new CrmClientCredentialsProvider());

            var orgService = serviceProvider.GetOrganisationService();

            using (orgService as IDisposable)
            {
                MetadataFilterExpression entityFilter = new MetadataFilterExpression(LogicalOperator.And);
                entityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityName));



                EntityQueryExpression entityQueryExpression = new EntityQueryExpression()
                {
                    Criteria   = entityFilter,
                    Properties = new MetadataPropertiesExpression()
                    {
                        AllProperties = true
                    }
                };
                RetrieveMetadataChangesRequest retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
                {
                    Query = entityQueryExpression,
                    ClientVersionStamp = null
                };
                RetrieveMetadataChangesResponse response = (RetrieveMetadataChangesResponse)orgService.Execute(retrieveMetadataChangesRequest);
                var entityMetadata = response.EntityMetadata[0];



                var path          = Environment.CurrentDirectory;
                var shortFileName = entityName + "Metadata.xml";


                var fileName   = System.IO.Path.Combine(path, shortFileName);
                var serialised = EntityMetadataUtils.SerializeMetaData(entityMetadata, System.Xml.Formatting.Indented);
                using (var writer = new System.IO.StreamWriter(fileName))
                {
                    writer.Write(serialised);
                    writer.Flush();
                    writer.Close();
                }

                if (!File.Exists(fileName))
                {
                    throw new FileNotFoundException("Could not save metadata file for entity " + entityName);
                }
            }
        }
        public void CanDocumentUpdate()
        {
            var entity = new TestEntity();

            object[] oldValues = CreateValues(null, null, null, null);
            object[] newValues = CreateValues(null, null, null, null);

            EntityMetadataUtils.DocumentUpdate(entity, newValues, oldValues, _properties);

            Assert.IsNull(entity.CreatedDate);
            Assert.IsNull(entity.CreatedByUser);
            Assert.IsNotNull(entity.LastChangedDate);
            Assert.IsNotNull(entity.LastChangedByUser);
        }
        public void CanDocumentCreation()
        {
            var entity = new TestEntity();

            object[] values = CreateValues(entity);
            EntityMetadataUtils.DocumentCreation(entity, values, _properties);

            Assert.AreEqual(GetUserName(), entity.CreatedByUser);
            Assert.AreEqual(GetUserName(), entity.LastChangedByUser);

            Assert.IsNotNull(entity.CreatedDate);
            Assert.AreEqual(entity.CreatedDate, entity.LastChangedDate);

            AssertEqualState(entity, values);
        }
        public void CanDocumentCreationWithExplicitMetadata_CreationDateOnly()
        {
            var          createdDate   = new DateTime(2000, 1, 1);
            const string createdByUser = null;

            var entity = new TestEntity
            {
                CreatedDate   = createdDate,
                CreatedByUser = createdByUser,
            };

            object[] values = CreateValues(entity);
            EntityMetadataUtils.DocumentCreation(entity, values, _properties);

            Assert.AreEqual(createdDate, entity.CreatedDate);
            Assert.AreEqual(GetUserName(), entity.CreatedByUser);

            // the LastChanged information will be set to the Creation information if missing
            Assert.AreEqual(createdDate, entity.LastChangedDate);
            Assert.AreEqual(GetUserName(), entity.LastChangedByUser);

            AssertEqualState(entity, values);
        }
        public void CanDocumentCreationWithExplicitMetadata_LastChangedOnly()
        {
            var          lastChangedDate   = new DateTime(2010, 1, 1);
            const string lastChangedByUser = "******";

            var entity = new TestEntity
            {
                LastChangedDate   = lastChangedDate,
                LastChangedByUser = lastChangedByUser,
            };

            object[] values = CreateValues(entity);
            EntityMetadataUtils.DocumentCreation(entity, values, _properties);

            Assert.AreEqual(lastChangedDate, entity.LastChangedDate);
            Assert.AreEqual(lastChangedByUser, entity.LastChangedByUser);

            // the Created information will be set to the LastChanged information if missing
            Assert.AreEqual(lastChangedDate, entity.CreatedDate);
            Assert.AreEqual(lastChangedByUser, entity.CreatedByUser);

            AssertEqualState(entity, values);
        }
        private CrmEntityMetadata LoadTestMetadataForEntity(string entityName)
        {
            var path          = Environment.CurrentDirectory;
            var shortFileName = entityName + "Metadata.xml";

            var fileName = System.IO.Path.Combine(path, "MetadataFiles\\", shortFileName);

            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException("Could not find metadata file for entity " + entityName);
            }

            using (var reader = new XmlTextReader(fileName))
            {
                var deserialised = EntityMetadataUtils.DeserializeMetaData(reader);

                var atts = new List <AttributeMetadata>();
                atts.AddRange(deserialised.Attributes);
                var attsList = _MetadataConverter.ConvertAttributeInfoList(atts);
                var entName  = "contact";
                var crmMeta  = new CrmEntityMetadata(entName, attsList, deserialised.PrimaryIdAttribute);
                return(crmMeta);
            }
        }