public void UpdateCompositeEntity() { UseClientFor(async client => { var childEntity = await client.Model.AddPrebuiltAsync(GlobalAppId, GlobalVersionId, new List <string> { "datetimeV2" }); var entity = new CompositeEntityModel(new List <string>() { "datetimeV2" }, name: "CompositeTest"); var entityId = await client.Model.AddCompositeEntityAsync(GlobalAppId, GlobalVersionId, entity); await client.Model.UpdateCompositeEntityAsync(GlobalAppId, GlobalVersionId, entityId, new CompositeEntityModel(new List <string>() { "datetimeV2" }, name: "CompositeTestUpdate")); var entities = await client.Model.ListCompositeEntitiesAsync(GlobalAppId, GlobalVersionId); await client.Model.DeleteCompositeEntityAsync(GlobalAppId, GlobalVersionId, entityId); await client.Model.DeletePrebuiltAsync(GlobalAppId, GlobalVersionId, childEntity.Single().Id); Assert.Equal("CompositeTestUpdate", entities.Single(e => e.Id == entityId).Name); }); }
public void AddCompositeEntity() { UseClientFor(async client => { var entity = new CompositeEntityModel(new List <string>() { "datetime" }, name: "CompositeTest"); var result = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity); await client.Model.DeleteCompositeEntityAsync(appId, "0.1", result); Assert.True(result != Guid.Empty); }); }
public void DeleteCompositeEntity() { UseClientFor(async client => { var entity = new CompositeEntityModel(new List <string>() { "datetime" }, name: "CompositeTest"); var entityId = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity); await client.Model.DeleteCompositeEntityAsync(appId, "0.1", entityId); var entities = await client.Model.ListCompositeEntitiesAsync(appId, "0.1"); Assert.DoesNotContain(entities, e => e.Id == entityId); }); }
public void AddCompositeEntity() { UseClientFor(async client => { var childEntity = await client.Model.AddPrebuiltAsync(GlobalAppId, GlobalVersionId, new List <string> { "datetimeV2" }); var compositeEntity = new CompositeEntityModel(new List <string>() { "datetimeV2" }, name: "CompositeTest"); var result = await client.Model.AddCompositeEntityAsync(GlobalAppId, GlobalVersionId, compositeEntity); await client.Model.DeleteCompositeEntityAsync(GlobalAppId, GlobalVersionId, result); await client.Model.DeletePrebuiltAsync(GlobalAppId, GlobalVersionId, childEntity.Single().Id); Assert.True(result != Guid.Empty); }); }
public void DeleteCompositeEntity() { UseClientFor(async client => { var childEntity = await client.Model.AddPrebuiltAsync(GlobalAppId, GlobalVersionId, new List <string> { "datetimeV2" }); var entity = new CompositeEntityModel(new List <string>() { childEntity.Single().Name }, name: "CompositeTest"); var entityId = await client.Model.AddCompositeEntityAsync(GlobalAppId, GlobalVersionId, entity); await client.Model.DeleteCompositeEntityAsync(GlobalAppId, GlobalVersionId, entityId); var entities = await client.Model.ListCompositeEntitiesAsync(GlobalAppId, GlobalVersionId); Assert.DoesNotContain(entities, e => e.Id == entityId); }); }
public void UpdateCompositeEntity() { UseClientFor(async client => { var entity = new CompositeEntityModel(new List <string>() { "datetime" }, name: "CompositeTest"); var entityId = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity); await client.Model.UpdateCompositeEntityAsync(appId, "0.1", entityId, new CompositeEntityModel(new List <string>() { "datetime" }, name: "HierarchicalTestUpdate")); var entities = await client.Model.ListCompositeEntitiesAsync(appId, "0.1"); await client.Model.DeleteCompositeEntityAsync(appId, "0.1", entityId); Assert.Equal("HierarchicalTestUpdate", entities.Single(e => e.Id == entityId).Name); }); }
public void AddCompositeEntityChild() { UseClientFor(async client => { var childEntityId = await client.Model.AddEntityAsync(appId, "0.1", new ModelCreateObject("ChildTest")); var entity = new CompositeEntityModel(new List <string>() { "datetime" }, name: "CompositeTest"); var entityId = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity); var child = new CompositeChildModelCreateObject("ChildTest"); var result = await client.Model.AddCompositeEntityChildAsync(appId, "0.1", entityId, child); await client.Model.DeleteCompositeEntityAsync(appId, "0.1", entityId); await client.Model.DeleteEntityAsync(appId, "0.1", childEntityId); Assert.True(result != Guid.Empty); }); }
public override void Display() { base.Display(); Console.WriteLine("We’ll now create the \"Flight\" composite entity including \"Class\" and \"Destination\"."); var compositeEntity = new CompositeEntityModel { Name = "Flight", Children = new[] { "Class", "Destination" } }; var compositeEntityId = AwaitTask(Client.Model.AddCompositeEntityAsync(AppId, VersionId, compositeEntity)); Console.WriteLine($"{compositeEntity.Name} composite entity created with id {compositeEntityId}"); NavigateWithInitializer <FindFlightsIntentPage>((page) => { page.AppId = AppId; page.VersionId = VersionId; }); }
internal static IList <EntityModel> PopulateCompositeEntityModel(CompositeEntityModel compositeEntity, IList <EntityModel> entities, JObject entitiesAndMetadata, bool verbose) { var childrenEntites = new JObject(); var childrenEntitiesMetadata = new JObject(); if (verbose) { childrenEntites[_metadataKey] = new JObject(); } // This is now implemented as O(n^2) search and can be reduced to O(2n) using a map as an optimization if n grows var compositeEntityMetadata = entities.FirstOrDefault(e => e.Type == compositeEntity.ParentType && e.Entity == compositeEntity.Value); // This is an error case and should not happen in theory if (compositeEntityMetadata == null) { return(entities); } if (verbose) { childrenEntitiesMetadata = ExtractEntityMetadata(compositeEntityMetadata); childrenEntites[_metadataKey] = new JObject(); } var coveredSet = new HashSet <EntityModel>(); foreach (var child in compositeEntity.Children) { foreach (var entity in entities) { // We already covered this entity if (coveredSet.Contains(entity)) { continue; } // This entity doesn't belong to this composite entity if (child.Type != entity.Type || !CompositeContainsEntity(compositeEntityMetadata, entity)) { continue; } // Add to the set to ensure that we don't consider the same child entity more than once per composite coveredSet.Add(entity); AddProperty(childrenEntites, ExtractNormalizedEntityName(entity), ExtractEntityValue(entity)); if (verbose) { AddProperty((JObject)childrenEntites[_metadataKey], ExtractNormalizedEntityName(entity), ExtractEntityMetadata(entity)); } } } AddProperty(entitiesAndMetadata, ExtractNormalizedEntityName(compositeEntityMetadata), childrenEntites); if (verbose) { AddProperty((JObject)entitiesAndMetadata[_metadataKey], ExtractNormalizedEntityName(compositeEntityMetadata), childrenEntitiesMetadata); } // filter entities that were covered by this composite entity return(entities.Except(coveredSet).ToList()); }