Example #1
0
        public async Task ShouldReturnPokemonTranslatedDescription()
        {
            var baseUriPoke         = new Uri("https://pokeapi.co/api/v2/pokemon-species/");
            var baseUriTranslation  = new Uri("https://api.funtranslations.com/translate/shakespeare.json/");
            var pokemonName         = "ditto";
            var expectedDescription = "'t can freely recombine its own cellular structure to transform into other life-forms.";
            var log             = new Mock <ILogger <string> >();
            var jsonPoke        = ReadEmbeddedResource($"{pokemonName}-pokemon-species.json");
            var jsonTranslation = ReadEmbeddedResource($"{pokemonName}-translation.json");
            var mockHttp        = new MockHttpMessageHandler();

            mockHttp.When($"{baseUriPoke}{pokemonName}/").Respond("application/json", jsonPoke);
            mockHttp.When($"{baseUriTranslation}*").Respond("application/json", jsonTranslation);
            var pokeAPIClient    = new PokeAPIClient(mockHttp.ToHttpClient());
            var translatorClient = new TranslatorClient(mockHttp.ToHttpClient());
            var pokemonRetriever = new PokemonRetriever(pokeAPIClient, translatorClient);
            var controller       = new PokemonController(pokemonRetriever, log.Object);

            var response = await controller.GetAsync(pokemonName);

            var result        = (ObjectResult)response.Result;
            var pokemonResult = (Pokemon)result.Value;

            Assert.Equal(pokemonName, pokemonResult.Name);
            Assert.Equal(expectedDescription, pokemonResult.Description);
        }
Example #2
0
        public async Task SuccessFalseIfUnableToGetDescription(HttpStatusCode httpStatusCode)
        {
            var pokemonName = "notExits";
            var mockHttp    = new MockHttpMessageHandler();

            mockHttp.When($"{_baseUri}{pokemonName}/").Respond(httpStatusCode);
            var sut = new PokeAPIClient(mockHttp.ToHttpClient());

            var response = await sut.GetPokemonDescriptionAsync(pokemonName);

            Assert.False(response.IsSuccess);
        }
Example #3
0
        public async Task ShouldRetrievePokemonDescription(string pokemonName, string expectedDescription)
        {
            var json     = ReadEmbeddedResource($"{pokemonName}-pokemon-species.json");
            var mockHttp = new MockHttpMessageHandler();

            mockHttp.When($"{_baseUri}{pokemonName}/").Respond("application/json", json);
            var sut = new PokeAPIClient(mockHttp.ToHttpClient());

            var response = await sut.GetPokemonDescriptionAsync(pokemonName);

            Assert.True(response.IsSuccess);
            Assert.Equal(expectedDescription, response.Value);
        }
Example #4
0
        public async Task ShouldReturnNotFound()
        {
            var pokemonName      = "ditto";
            var log              = new Mock <ILogger <string> >();
            var mockHttp         = new MockHttpMessageHandler();
            var pokeAPIClient    = new PokeAPIClient(mockHttp.ToHttpClient());
            var translatorClient = new TranslatorClient(mockHttp.ToHttpClient());
            var pokemonRetriever = new PokemonRetriever(pokeAPIClient, translatorClient);
            var controller       = new PokemonController(pokemonRetriever, log.Object);

            var response = await controller.GetAsync(pokemonName);

            var result = (ObjectResult)response.Result;

            Assert.Equal(StatusCodes.Status404NotFound, result.StatusCode.Value);
        }
Example #5
0
        static async Task Main(string[] args)
        {
            PokeAPIClient client = new PokeAPIClient();

            try
            {
                Pokemon result = await client.GetPokemonByName("bulbasaur");

                Console.WriteLine($"Pokemon id: {result.id}, " +
                                  $"\nName: {result.name}, " +
                                  $"\nWeight: {result.weight}, " +
                                  $"\nHeight(in inches): {result.height}");
            }
            catch (ArgumentException)
            {
                Console.WriteLine("Sorry, that pokemon does not exist");
            }
            catch (HttpRequestException)
            {
                Console.WriteLine("Please try again later");
            }

            Console.ReadKey();
        }