public async Task ShouldRenameAppSDKTest()
        {
            var client = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);
            var app    = await client.GetAppByNameAsync("SDKTest");

            var appChanged = await client.GetAppByNameAsync("SDKTestChanged");

            if (app == null)
            {
                await client.AddAppAsync("SDKTest", "Description test", "en-us", "SDKTest", string.Empty, "1.0");

                app = await client.GetAppByNameAsync("SDKTest");
            }

            if (appChanged != null)
            {
                await client.DeleteAppAsync(appChanged.Id);
            }

            await client.RenameAppAsync(app.Id, "SDKTestChanged", "Description changed");

            app = await client.GetAppByIdAsync(app.Id);

            Assert.AreEqual("SDKTestChanged", app.Name);
        }
        public async Task ShouldRenameAppSDKTest()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var app = await client.GetAppByNameAsync("SDKTest");

                var appChanged = await client.GetAppByNameAsync("SDKTestChanged");

                if (app == null)
                {
                    await client.AddAppAsync("SDKTest", "Description test", "en-us", "SDKTest", string.Empty, appVersion);

                    app = await client.GetAppByNameAsync("SDKTest");
                }

                if (appChanged != null)
                {
                    await client.DeleteAppAsync(appChanged.Id);
                }

                await client.RenameAppAsync(app.Id, "SDKTestChanged", "Description changed");

                app = await client.GetAppByIdAsync(app.Id);

                Assert.AreEqual("SDKTestChanged", app.Name);
            }
        }
        protected static void Cleanup()
        {
            var client = new LuisProgClient(SubscriptionKey, Region);
            var app    = client.GetAppByNameAsync("SDKTest").Result;

            if (app != null)
            {
                client.DeleteAppAsync(app.Id).Wait();
            }
            app = client.GetAppByNameAsync("SDKTestChanged").Result;
            if (app != null)
            {
                client.DeleteAppAsync(app.Id).Wait();
            }
            appId = null;
        }
        public async Task ShouldThrowExceptionOnDeleteAppSDKTestWhenNotExists()
        {
            var client = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);
            var ex     = await Assert.ThrowsExceptionAsync <Exception>(() =>
                                                                       client.DeleteAppAsync("51593248-363e-4a08-b946-2061964dc690"));

            Assert.AreEqual(ex.Message, "Cannot find an application with the specified ID");
        }
        public async Task ShouldThrowExceptionOnDeleteAppSDKTestWhenNotExists()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var ex = await Assert.ThrowsExceptionAsync <Exception>(() =>
                                                                       client.DeleteAppAsync(InvalidId));

                Assert.AreEqual(ex.Message, "BadArgument - Cannot find an application with the ID 51593248-363e-4a08-b946-2061964dc690.");
            }
        }
        public async Task ShouldGetNullWhenNotExistsAppName()
        {
            var client  = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);
            var appTest = await client.GetAppByNameAsync("SDKTest");

            if (appTest != null)
            {
                await client.DeleteAppAsync(appTest.Id);
            }

            var app = await client.GetAppByNameAsync("SDKTest");

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

            var appTest = await client.GetAppByNameAsync("SDKTest");

            if (appTest != null)
            {
                await client.DeleteAppAsync(appTest.Id);
            }

            var newId = await client.AddAppAsync("SDKTest", "Description test", "en-us", "SDKTest", string.Empty, "1.0");

            Assert.IsNotNull(newId);
        }
        public async Task ShouldAddNewAppSDKTest()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var appTest = await client.GetAppByNameAsync("SDKTest");

                if (appTest != null)
                {
                    await client.DeleteAppAsync(appTest.Id);
                }

                var newId = await client.AddAppAsync("SDKTest", "Description test", "en-us", "SDKTest", string.Empty, appVersion);

                Assert.IsNotNull(newId);
            }
        }
        public async Task ShouldGetNullWhenNotExistsAppName()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                var appTest = await client.GetAppByNameAsync("SDKTest");

                if (appTest != null)
                {
                    await client.DeleteAppAsync(appTest.Id);
                }

                var app = await client.GetAppByNameAsync("SDKTest");

                Assert.IsNull(app);
            }
        }
        public PublishTests()
        {
            var client = new LuisProgClient(SUBSCRIPTION_KEY, LOCATION);

            var app = client.GetAppByNameAsync("SDKTest").Result;

            if (app != null)
            {
                client.DeleteAppAsync(app.Id).Wait();
                _appId = client.AddAppAsync("SDKTest", "Description test", "en-us", "SDKTest", string.Empty, "1.0").Result;
            }
            else
            {
                _appId = client.AddAppAsync("SDKTest", "Description test", "en-us", "SDKTest", string.Empty, "1.0").Result;
            }
        }
        public async Task ShouldDeleteAppSDKTest()
        {
            using (var client = new LuisProgClient(SubscriptionKey, Region))
            {
                if (await client.GetAppByNameAsync("SDKTest") == null)
                {
                    await client.AddAppAsync("SDKTest", "Description test", "en-us", "SDKTest", string.Empty, appVersion);
                }

                var app = await client.GetAppByNameAsync("SDKTest");

                await client.DeleteAppAsync(app.Id);

                var newapp = await client.GetAppByIdAsync(app.Id);

                Assert.IsNull(newapp);
            }
        }