Esempio n. 1
0
        public async Task GetTranslation_TooManyRequests()
        {
            //mock fake response and initialize test
            var fakeHandler = new FakeHttpMessageHandler();

            fakeHandler.Response = new HttpResponseMessage((HttpStatusCode)429);

            var textToTranslate = "sample text to be translated";

            var sampleTranslation = GetSampleTranslation_Error(textToTranslate);

            fakeHandler.Response.Content = new StringContent(JsonConvert.SerializeObject(sampleTranslation), Encoding.UTF8, "application/json");

            HttpClient client = new HttpClient(fakeHandler);

            //execute
            try
            {
                var result = await ShakespeareTranslatorUtils.GetTranslationAsync(client, shakespeareTranslatorEndpoint, textToTranslate);
            }
            catch (HttpException ex)
            {
                Assert.AreEqual((HttpStatusCode)429, (HttpStatusCode)ex.GetHttpCode());
                return;
            }
        }
        public async Task <IHttpActionResult> GetPokemonDataAsync(string pokemonName)
        {
            //test api call get pokemon
            var pokeapiEndpoint = ConfigurationManager.AppSettings["PokeApiEndpoint"];
            var shakesperareTranslatorEndpoint = ConfigurationManager.AppSettings["ShakespeareTranslatorEndpoint"];

            //get pokemon data via PokeApi
            var pokemonDescription = "";

            //get pokemon data
            try
            {
                var pokemon = await PokeApiUtils.GetPokemonDataAsync(Client, string.Format("{0}/pokemon/{1}", pokeapiEndpoint, pokemonName));

                if (!string.IsNullOrEmpty(pokemon.species?.Url))
                {
                    //get species data
                    var pokemonSpecies = await PokeApiUtils.GetPokemonSpeciesDataAsync(Client, pokemon.species.Url);

                    //filter for english language and group results by version, to take only the most recent values
                    List <string> flavorTexts = pokemonSpecies.flavorTextEntries.Where(t => t.language.Name == "en").GroupBy(g => g.version.Url).LastOrDefault()?.Select(s => s.flavorText).ToList();
                    pokemonDescription = string.Join("\n", flavorTexts);
                }
            }
            catch (HttpException ex)
            {
                return(Content((HttpStatusCode)ex.GetHttpCode(), ex.Message.ToString()));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex.Message.ToString()));
            }

            //get translation via ShakespeareTranslator
            var translatedDescription = "";

            //get translation
            try
            {
                var translation = await ShakespeareTranslatorUtils.GetTranslationAsync(Client, shakesperareTranslatorEndpoint, pokemonDescription);

                translatedDescription = translation.contents.translated;
            }
            catch (HttpException ex)
            {
                return(Content((HttpStatusCode)ex.GetHttpCode(), ex.Message.ToString()));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex.Message.ToString()));
            }

            var response = new TranslatedPokemonResponseModel(pokemonName, translatedDescription);

            return(Ok(response));
        }
        public async Task ShakespeareTranslator_ValidInput()
        {
            //initialize test
            var textToTranslate = "sample text to be translated";
            //var jsonContent = Helper.CreateRequestContent(new ShakespeareTranslator_InputModel(textToTranslate));

            //execute
            var translation = await ShakespeareTranslatorUtils.GetTranslationAsync(Client, Client.BaseAddress.ToString(), textToTranslate);

            //var response = await Client.PostAsync("", jsonContent);
            //var responseContent = await response.Content.ReadAsStringAsync();
            //var translation = JsonConvert.DeserializeObject<ShakespeareTranslator_ResponseModel>(responseContent);

            //assert
            //response.EnsureSuccessStatusCode();
            Assert.IsFalse(string.IsNullOrEmpty(translation.contents.translated));
        }
Esempio n. 4
0
        public async Task GetTranslation_ValidInput()
        {
            //mock fake response and initialize test
            var fakeHandler = new FakeHttpMessageHandler();

            fakeHandler.Response.StatusCode = HttpStatusCode.OK;

            var textToTranslate = "sample text to be translated";

            var sampleTranslation = GetSampleTranslation_Success(textToTranslate);

            fakeHandler.Response.Content = new StringContent(JsonConvert.SerializeObject(sampleTranslation), Encoding.UTF8, "application/json");

            HttpClient client = new HttpClient(fakeHandler);

            //execute
            var result = await ShakespeareTranslatorUtils.GetTranslationAsync(client, shakespeareTranslatorEndpoint, textToTranslate);

            //assert
            Assert.IsTrue(result.success != null);
            Assert.AreEqual(textToTranslate, result.contents.text);
        }