public void PokemonTypeSearcher_ReturnsException()
        {
            #region Arrange
            string      name        = PokemonNameMother.Random();
            PokemonName pokemonName = new PokemonName()
            {
                Name = name
            };
            string expectedMessage       = $"Pokemon '{name}' does not exist";
            var    pokemonTypeRepository = new Mock <PokemonTypeRepository>();

            pokemonTypeRepository
            .Setup(r => r.Search(It.Is <PokemonName>(n => String.Equals(n.Name, name, StringComparison.InvariantCultureIgnoreCase))))
            .ReturnsAsync(null as PokemonTypes);

            var pokemonTypeSearcher = new PokemonTypeSearcher(pokemonTypeRepository.Object);

            #endregion

            #region Act
            var exception = Record.ExceptionAsync(async() => await pokemonTypeSearcher.Execute(pokemonName));

            #endregion

            #region Assert
            Assert.Equal(expectedMessage, exception.Result.Message);

            #endregion
        }
Exemple #2
0
 public Pokemon(PokemonId pokemonId, PokemonName pokemonName, PokemonTypes pokemonTypes, PokemonFavouriteCount pokemonFavouriteCount)
 {
     PokemonId             = pokemonId;
     PokemonName           = pokemonName;
     PokemonTypes          = pokemonTypes;
     PokemonFavouriteCount = pokemonFavouriteCount;
 }
        public async Task PokemonTypeSearcher_ReturnsTypes()
        {
            #region Arrange
            string      name        = PokemonNameMother.Name();
            PokemonName pokemonName = new PokemonName()
            {
                Name = name
            };
            var pokemonTypeRepository = new Mock <PokemonTypeRepository>();

            pokemonTypeRepository
            .Setup(r => r.Search(It.Is <PokemonName>(n => String.Equals(n.Name, name, StringComparison.InvariantCultureIgnoreCase))))
            .ReturnsAsync(PokemonTypesMother.PokemonTypes());

            var pokemonTypeSearcher = new PokemonTypeSearcher(pokemonTypeRepository.Object);

            #endregion

            #region Act
            PokemonTypes pokemonTypes = await pokemonTypeSearcher.Execute(pokemonName);

            #endregion

            #region Assert
            var typesArray = pokemonTypes.Types.Select(s => s.PokemonTypeName.Name).ToArray();
            Assert.Equal(typesArray, PokemonTypesMother.PokemonTypes().Types.Select(s => s.PokemonTypeName.Name).ToArray(), StringComparer.InvariantCultureIgnoreCase);

            #endregion
        }
 public override int GetHashCode()
 {
     unchecked
     {
         return((EncounterId.GetHashCode() * 397) ^ PokemonName.GetHashCode());
     }
 }
Exemple #5
0
        public async Task <PokemonTypes> Execute(PokemonName pokemonName)
        {
            PokemonTypes pokemonTypes = await _pokemonTypeRepository.Search(pokemonName);

            if (pokemonTypes == null)
            {
                throw new PokemonNotFoundException(pokemonName);
            }

            return(pokemonTypes);
        }
Exemple #6
0
        public PokemonSearchWindowViewModel()
        {
            // 入力補完候補を設定
            PokemonDataModel pokemonDataModel = new PokemonDataModel();

            Pokemons = pokemonDataModel.GetPokemons();

            // 紐づけ
            PokemonImage = PokemonSearchWindowModel
                           .ObserveProperty(m => m.PokemonId)
                           .Select(x => ImageFactoryModel.CreatePokemonImage(x)).ToReactiveProperty();

            // 処理
            PokemonName.Subscribe(pokemonName => PokemonSearchWindowModel.ChangePokemonId(pokemonName));

            // コマンド
            CloseWindowCommand = new DelegateCommand <object>(CloseWindow);
        }
Exemple #7
0
        public async Task <PokemonTypes> Search(PokemonName pokemonName)
        {
            var json = await Request(API_URL + $"pokemon/{pokemonName.Name}");

            if (json == null)
            {
                return(null);
            }

            return(new PokemonTypes()
            {
                Types = json["types"].Values("type").Select(x => new PokemonType
                {
                    PokemonTypeName = new PokemonTypeName()
                    {
                        Name = x["name"].ToString()
                    }
                }).ToList()
            });
        }
Exemple #8
0
        public async Task Search_NotFound_ReturnsNull()
        {
            #region Arrange

            PokeApiPokemonTypeRepository pokemonTypeRepository = new PokeApiPokemonTypeRepository();
            PokemonName pokemonName = new PokemonName()
            {
                Name = PokemonNameMother.Random()
            };

            #endregion

            #region Act
            PokemonTypes pokemonTypes = await pokemonTypeRepository.Search(pokemonName);

            #endregion

            #region Assert
            Assert.Null(pokemonTypes);

            #endregion
        }
Exemple #9
0
        public async Task Search_Found_ReturnsTypes()
        {
            #region Arrange

            PokeApiPokemonTypeRepository pokemonTypeRepository = new PokeApiPokemonTypeRepository();
            PokemonName pokemonName = new PokemonName()
            {
                Name = PokemonNameMother.Name()
            };

            #endregion

            #region Act
            PokemonTypes pokemonTypes = await pokemonTypeRepository.Search(pokemonName);

            #endregion

            #region Assert
            var typesArray = pokemonTypes.Types.Select(s => s.PokemonTypeName.Name).ToArray();
            Assert.Equal(typesArray, PokemonTypesMother.PokemonTypes().Types.Select(s => s.PokemonTypeName.Name).ToArray(), StringComparer.InvariantCultureIgnoreCase);

            #endregion
        }
Exemple #10
0
 public Pokemon(PokemonId pokemonId, PokemonName pokemonName, PokemonTypes pokemonTypes)
 {
     PokemonId    = pokemonId;
     PokemonName  = pokemonName;
     PokemonTypes = pokemonTypes;
 }
Exemple #11
0
 public PokemonNotFoundException(PokemonName pokemonName)
 {
     _pokemonName = pokemonName;
 }