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); }
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); } }