public async Task ShouldRenameEntityTest()
        {
            var client = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);
            var entity = await client.GetEntityByNameAsync("EntityTest", _appId, "1.0");

            var entityChanged = await client.GetEntityByNameAsync("EntityTestChanged", _appId, "1.0");

            if (entity == null)
            {
                await client.AddEntityAsync("EntityTest", _appId, "1.0");

                entity = await client.GetEntityByNameAsync("EntityTest", _appId, "1.0");
            }

            if (entityChanged != null)
            {
                await client.DeleteEntityAsync(entityChanged.Id, _appId, "1.0");
            }

            await client.RenameEntityAsync(entity.Id, "EntityTestChanged", _appId, "1.0");

            entity = await client.GetEntityByIdAsync(entity.Id, _appId, "1.0");

            Assert.AreEqual("EntityTestChanged", entity.Name);
        }
        public async Task ShouldRenameEntityTest()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var entity = await client.GetEntityByNameAsync(EntityName, appId, appVersion);

                var entityChanged = await client.GetEntityByNameAsync(EntityNameChanged, appId, appVersion);

                if (entity == null)
                {
                    await client.AddEntityAsync(EntityName, appId, appVersion);

                    entity = await client.GetEntityByNameAsync(EntityName, appId, appVersion);
                }

                if (entityChanged != null)
                {
                    await client.DeleteEntityAsync(entityChanged.Id, appId, appVersion);
                }

                await client.RenameEntityAsync(entity.Id, EntityNameChanged, appId, appVersion);

                entity = await client.GetEntityByIdAsync(entity.Id, appId, appVersion);

                Assert.AreEqual(EntityNameChanged, entity.Name);
            }
        }
        public async Task ShouldThrowExceptionOnDeleteEntityTestWhenNotExists()
        {
            var client = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);
            var ex     = await Assert.ThrowsExceptionAsync <Exception>(() =>
                                                                       client.DeleteEntityAsync("51593248-363e-4a08-b946-2061964dc690", _appId, "1.0"));

            Assert.AreEqual(ex.Message, "The specified model does not exist in the application");
        }
        public async Task ShouldThrowExceptionOnDeleteEntityTestWhenNotExists()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var ex = await Assert.ThrowsExceptionAsync <Exception>(() =>
                                                                       client.DeleteEntityAsync(InvalidId, appId, appVersion));

                Assert.AreEqual(ex.Message, "BadArgument - Cannot find the input model in the specified application version.");
            }
        }
        public async Task ShouldGetNullWhenNotExistsEntityName()
        {
            var client     = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);
            var entityTest = await client.GetEntityByNameAsync("EntityTest", _appId, "1.0");

            if (entityTest != null)
            {
                await client.DeleteEntityAsync(entityTest.Id, _appId, "1.0");
            }

            var entity = await client.GetEntityByNameAsync("EntityTest", _appId, "1.0");

            Assert.IsNull(entity);
        }
        public async Task ShouldAddNewEntityTest()
        {
            var client = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);

            var entityTest = await client.GetEntityByNameAsync("EntityTest", _appId, "1.0");

            if (entityTest != null)
            {
                await client.DeleteEntityAsync(entityTest.Id, _appId, "1.0");
            }

            var newId = await client.AddEntityAsync("EntityTest", _appId, "1.0");

            Assert.IsNotNull(newId);
        }
        public async Task ShouldGetNullWhenNotExistsEntityName()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var entityTest = await client.GetEntityByNameAsync(EntityName, appId, appVersion);

                if (entityTest != null)
                {
                    await client.DeleteEntityAsync(entityTest.Id, appId, appVersion);
                }

                var entity = await client.GetEntityByNameAsync(EntityName, appId, appVersion);

                Assert.IsNull(entity);
            }
        }
        public async Task ShouldAddNewEntityTest()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var entityTest = await client.GetEntityByNameAsync(EntityName, appId, appVersion);

                if (entityTest != null)
                {
                    await client.DeleteEntityAsync(entityTest.Id, appId, appVersion);
                }

                var newId = await client.AddEntityAsync(EntityName, appId, appVersion);

                Assert.IsNotNull(newId);
            }
        }
        public async Task ShouldDeleteEntityTest()
        {
            var client = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);

            if (await client.GetEntityByNameAsync("EntityTest", _appId, "1.0") == null)
            {
                await client.AddEntityAsync("EntityTest", _appId, "1.0");
            }

            var entity = await client.GetEntityByNameAsync("EntityTest", _appId, "1.0");

            await client.DeleteEntityAsync(entity.Id, _appId, "1.0");

            entity = await client.GetEntityByIdAsync(entity.Id, _appId, "1.0");

            Assert.IsNull(entity);
        }
        public async Task ShouldDeleteEntityTest()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                if (await client.GetEntityByNameAsync(EntityName, appId, appVersion) == null)
                {
                    await client.AddEntityAsync(EntityName, appId, appVersion);
                }

                var entity = await client.GetEntityByNameAsync(EntityName, appId, appVersion);

                await client.DeleteEntityAsync(entity.Id, appId, appVersion);

                entity = await client.GetEntityByIdAsync(entity.Id, appId, appVersion);

                Assert.IsNull(entity);
            }
        }