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); }
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); }
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); }
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); }
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(); }