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 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); }
public async Task ShouldReturnPokemonTranslatedDescription() { var pokemonName = "ditto"; var pokeApiDescription = "It can freely recombine its own cellular structure to\ntransform into other life-forms."; var translatedDescription = "'t can freely recombine its own cellular structure to transform into other life-forms."; var expectedDescription = "'t can freely recombine its own cellular structure to transform into other life-forms."; var pokeAPIClient = new Mock <IPokeAPIClient>(); pokeAPIClient.Setup(x => x.GetPokemonDescriptionAsync(It.IsAny <string>())).ReturnsAsync(Result <string> .Success(pokeApiDescription)); var translatorClient = new Mock <ITranslatorClient>(); translatorClient.Setup(x => x.GetTranslationAsync(It.IsAny <string>())).ReturnsAsync(Result <string> .Success(translatedDescription)); var controller = new PokemonRetriever(pokeAPIClient.Object, translatorClient.Object); var description = await controller.GetDescriptionAsync(pokemonName); Assert.True(description.IsSuccess); Assert.Equal(expectedDescription, description.Value); }