public void DecideTranslationType_IsLegendary_TranslatorTypeEqualsYoda()
        {
            var             pokemon         = new Domain.Pokemon("name", new TranslatedText("description"), "waters-edge", true);
            TranslationType translationType = _translatorFactory.DecideTranslationType(pokemon);

            Assert.AreEqual(TranslationType.Yoda, translationType);
        }
        public void DecideTranslationType_NotLegendaryOrCaveHabitat_TranslatorTypeEqualsShakespeare(string habitat)
        {
            var             pokemon         = new Domain.Pokemon("name", new TranslatedText("description"), habitat, false);
            TranslationType translationType = _translatorFactory.DecideTranslationType(pokemon);

            Assert.AreEqual(TranslationType.Shakespeare, translationType);
        }
Exemplo n.º 3
0
        public async Task TranslateDescription_DescriptionCanBeTranslated_ReturnedPokemonHasTranlatedDescription()
        {
            string description = "Hello, good evening and welcome.";

            Domain.Pokemon pokemon = new Domain.Pokemon("n", new TranslatedText(description), "h", true);

            TranslationType translationType = TranslationType.Yoda;

            _mockTranslationTypeDecider.Setup(ttd => ttd.DecideTranslationType(pokemon))
            .Returns(translationType);

            string translatedDescription = "Welcome, good evening and hello";

            _mockTranslator.Setup(t => t.Read(It.IsAny <TranslationRequest>()))
            .ReturnsAsync(new TranslationResult()
            {
                Contents = new Contents()
                {
                    Translated = translatedDescription
                }
            });

            Domain.Pokemon translatedPokemon = await _translationService.TranslateDescription(pokemon);

            Assert.AreEqual(translatedDescription, translatedPokemon.Description.Text);
        }
        public void DecideTranslationType_CaveHabitat_TranslatorTypeEqualsYoda()
        {
            var             pokemon         = new Domain.Pokemon("name", new TranslatedText("description"), "cave", false);
            TranslationType translationType = _translatorFactory.DecideTranslationType(pokemon);

            Assert.AreEqual(TranslationType.Yoda, translationType);
        }
Exemplo n.º 5
0
        public async Task TranslateDescription_NullPokemon_NullPokemonReturned()
        {
            Domain.Pokemon pokemon = null;

            Domain.Pokemon translatedPokemon = await _translationService.TranslateDescription(pokemon);

            Assert.IsNull(translatedPokemon);
        }
Exemplo n.º 6
0
        public async Task TranslateDescription_DescriptionCannotBeTranslated_PokemonHasInputDescription(string description)
        {
            Domain.Pokemon pokemon = new Domain.Pokemon("n", new TranslatedText(description), "h", true);

            Domain.Pokemon translatedPokemon = await _translationService.TranslateDescription(pokemon);

            Assert.AreEqual(pokemon.Description, translatedPokemon.Description);
        }
Exemplo n.º 7
0
        public async Task TranslateDescription_DescriptionIsNull_DescriptionIsNull()
        {
            Domain.Pokemon pokemon = new Domain.Pokemon("n", null, "h", true);

            Domain.Pokemon translatedPokemon = await _translationService.TranslateDescription(pokemon);

            Assert.IsNull(translatedPokemon.Description);
        }
Exemplo n.º 8
0
        public TranslationType DecideTranslationType(Domain.Pokemon pokemon)
        {
            if (pokemon.Habitat == _caveHabitatName || pokemon.IsLegendary)
            {
                return(TranslationType.Yoda);
            }

            return(TranslationType.Shakespeare);
        }
Exemplo n.º 9
0
        public async Task GetPokemon_ReaderReturnsNull_NullIsReturned(string name)
        {
            _mockPokemonReader.Setup(pr => pr.Read(It.IsAny <string>()))
            .ReturnsAsync((PokemonSpecies)null);

            Domain.Pokemon returnedPokemon = await _pokemonService.GetPokemon(name);

            Assert.IsNull(returnedPokemon);
        }
Exemplo n.º 10
0
        public void Map_NullFlavorTextEntries_HasNullDescriptionText()
        {
            var pokemonSpecies = new PokemonSpecies()
            {
                Name = "mewtwo"
            };

            Domain.Pokemon pokemon = _mapper.Map(pokemonSpecies);

            Assert.IsNull(pokemon.Description.Text);
        }
Exemplo n.º 11
0
        public void Map_IsNotLegendary_IsNotLegendary()
        {
            var pokemonSpecies = new PokemonSpecies()
            {
                Name        = "mewtwo",
                IsLegendary = false
            };

            Domain.Pokemon pokemon = _mapper.Map(pokemonSpecies);

            Assert.IsFalse(pokemon.IsLegendary);
        }
Exemplo n.º 12
0
        public async Task TranslateDescription_DescriptionCanBeTranslated_TranslationTypeDeciderWasCalledOnce()
        {
            string description = "Hello, good evening and welcome.";

            Domain.Pokemon pokemon = new Domain.Pokemon("n", new TranslatedText(description), "h", true);
            _mockTranslationTypeDecider.Setup(ttd => ttd.DecideTranslationType(pokemon))
            .Returns(TranslationType.Yoda);

            Domain.Pokemon translatedPokemon = await _translationService.TranslateDescription(pokemon);

            _mockTranslationTypeDecider.Verify(tf => tf.DecideTranslationType(pokemon), Times.Once);
        }
Exemplo n.º 13
0
        public void Map_HyphenatedHabitat_HasCorrectHabitat()
        {
            var pokemonSpecies = new PokemonSpecies()
            {
                Name    = "mewtwo",
                Habitat = new Habitat()
                {
                    Name = "waters-edge"
                }
            };

            Domain.Pokemon pokemon = _mapper.Map(pokemonSpecies);

            Assert.AreEqual("waters-edge", pokemon.Habitat);
        }
Exemplo n.º 14
0
        public async Task TranslateDescription_DescriptionCanBeTranslated_TranslatorWasCalledOnceWithCorrectRequest()
        {
            string description = "Hello, good evening and welcome.";

            Domain.Pokemon  pokemon         = new Domain.Pokemon("n", new TranslatedText(description), "h", true);
            TranslationType translationType = TranslationType.Yoda;

            _mockTranslationTypeDecider.Setup(ttd => ttd.DecideTranslationType(pokemon))
            .Returns(translationType);

            Domain.Pokemon translatedPokemon = await _translationService.TranslateDescription(pokemon);

            _mockTranslator.Verify(t => t.Read(It.Is <TranslationRequest>(tr => tr.Text == description && tr.Type == translationType)),
                                   Times.Once);
        }
Exemplo n.º 15
0
        public async Task GetPokemon_ValidName_ResultOfMapperIsReturned(string name)
        {
            var pokemonSpecies = new PokemonSpecies();

            _mockPokemonReader.Setup(pr => pr.Read(It.IsAny <string>()))
            .ReturnsAsync(pokemonSpecies);

            var mappedPokemon = new Domain.Pokemon("name", new TranslatedText("description"), "habitat", true);

            _mockPokemonMapper.Setup(m => m.Map(It.IsAny <PokemonSpecies>()))
            .Returns(mappedPokemon);

            Domain.Pokemon returnedPokemon = await _pokemonService.GetPokemon(name);

            Assert.AreEqual(mappedPokemon, returnedPokemon);
        }
Exemplo n.º 16
0
        public async Task TranslateDescription_ThrowsHttpRequestException_ReturnedPokemontDescriptionHasTranslationTypeOfNone()
        {
            string description = "Hello, good evening and welcome.";

            Domain.Pokemon pokemon = new Domain.Pokemon("n", new TranslatedText(description), "h", true);

            var translationType = TranslationType.Yoda;

            _mockTranslationTypeDecider.Setup(tf => tf.DecideTranslationType(pokemon))
            .Returns(translationType);

            _mockTranslator.Setup(t => t.Read(It.IsAny <TranslationRequest>())).ThrowsAsync(new HttpRequestException());

            Domain.Pokemon translatedPokemon = await _translationService.TranslateDescription(pokemon);

            Assert.AreEqual(TranslationType.None, translatedPokemon.Description.TranslationType);
        }
Exemplo n.º 17
0
        public void Map_NoEnglishFlavorTextEntry_HasNullDescriptionText()
        {
            var pokemonSpecies = new PokemonSpecies()
            {
                Name = "mewtwo",
                FlavorTextEntries = new List <FlavorTextEntry>
                {
                    new FlavorTextEntry
                    {
                        FlavorText = "not in English",
                        Language   = new Language()
                        {
                            Name = "fr"
                        }
                    }
                }
            };

            Domain.Pokemon pokemon = _mapper.Map(pokemonSpecies);

            Assert.IsNull(pokemon.Description.Text);
        }
Exemplo n.º 18
0
        public async Task <Domain.Pokemon> TranslateDescription(Domain.Pokemon pokemon)
        {
            if (pokemon == null || pokemon.Description == null || string.IsNullOrWhiteSpace(pokemon.Description.Text))
            {
                return(pokemon);
            }

            TranslationType translationType = _translationTypeDecider.DecideTranslationType(pokemon);
            IReader <TranslationRequest, TranslationResult> translator = _translatorFactory?.Invoke(translationType);
            TranslationRequest translationRequest = new TranslationRequest(translationType, pokemon.Description.Text);

            try
            {
                TranslationResult translatedResult = await translator.Read(translationRequest);

                TranslatedText translatedText = new TranslatedText(translatedResult.Contents.Translated, translationType);
                return(new Domain.Pokemon(pokemon.Name, translatedText, pokemon.Habitat, pokemon.IsLegendary));
            }
            catch
            {
                return(pokemon);
            }
        }
Exemplo n.º 19
0
        public void Map_PropertiesAllValid_HasCorrectName()
        {
            Domain.Pokemon pokemon = _mapper.Map(_mewtwoPokemonSpecies);

            Assert.AreEqual("mewtwo", pokemon.Name);
        }
Exemplo n.º 20
0
        public void Map_PropertiesAllValid_HasCorrectDescriptionText()
        {
            Domain.Pokemon pokemon = _mapper.Map(_mewtwoPokemonSpecies);

            Assert.AreEqual("Created by a scientist.", pokemon.Description.Text);
        }
Exemplo n.º 21
0
        public async Task GetPokemon_ValidName_ReaderIsCalled(string name)
        {
            Domain.Pokemon pokemon = await _pokemonService.GetPokemon(name);

            _mockPokemonReader.Verify(pr => pr.Read(name));
        }
Exemplo n.º 22
0
        public void Map_PropertiesAllValid_HasCorrectHabitat()
        {
            Domain.Pokemon pokemon = _mapper.Map(_mewtwoPokemonSpecies);

            Assert.AreEqual("rare", pokemon.Habitat);
        }
Exemplo n.º 23
0
        public void Map_IsLegendary_IsLegendary()
        {
            Domain.Pokemon pokemon = _mapper.Map(_mewtwoPokemonSpecies);

            Assert.AreEqual(true, pokemon.IsLegendary);
        }