Esempio n. 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);
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        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);
        }