Пример #1
0
        public async Task Create_AddPokemonToDb_InsertsPokemon()
        {
            var pokemon = new Pokemon()
            {
                Id         = Guid.Parse("47b176a6-535f-447b-9f09-86465f07967a"),
                Name       = "Evegenij",
                Avatar     = "Evgavatar",
                Generation = 2,
                Height     = 100,
                Weight     = 100,
                Abilities  = new List <PokemonAbility>()
                {
                    new PokemonAbility()
                    {
                        Ability = new Ability()
                        {
                            Name = "Leaf strike"
                        }
                    }
                }
            };


            // arrange
            var repository = new Mock <IRepository <Pokemon> >();

            repository.Setup(x =>
                             x.Insert(
                                 It.IsAny <Pokemon>(),
                                 CancellationToken.None
                                 )).ReturnsAsync(pokemon.Id);

            var mapper = TestHelper.GetMapper();

            var logger = new NullLogger <PokemonService>();

            var loggerValidator = new Mock <ILogger <PokemonValidator> >();

            var validator = new PokemonValidator(loggerValidator.Object);

            var service = new PokemonService(mapper: mapper, validator: validator, repository: repository.Object, logger: logger);

            // act
            var pokemonDTO = mapper.Map <PokemonDTO>(pokemon);
            var result     = (await service.Create(pokemonDTO, CancellationToken.None));

            // assert

            repository.Verify(x => x.Insert(
                                  It.IsAny <Pokemon>(),
                                  CancellationToken.None)
                              , Times.Once);

            repository.VerifyNoOtherCalls();
        }
Пример #2
0
        public ActionResult Post([FromBody] Pokemon pokemon)
        {
            var validator = new PokemonValidator();
            var result    = validator.Validate(pokemon);

            if (ModelState.IsValid)
            {
                pokemonRepository.Add(pokemon);
                return(Ok());
            }
            return(BadRequest(result.Errors));
        }
Пример #3
0
        public async Task IsGeneration_ValueLessThan8AndMoreThan1_ValidationException()
        {
            // ARRANGE
            var pokemon = new PokemonDTO()
            {
                Id         = Guid.Parse("8372c3f3-8281-4c21-8d0f-8830817bc2fb"),
                Name       = "Georigus",
                Avatar     = "Edipus",
                Generation = 10,
                Height     = 100,
                Weight     = 100,
                Type       = PokemonType.Fire
            };

            // ACT
            var loggerValidator = new Mock <ILogger <PokemonValidator> >();

            var validator = new PokemonValidator(loggerValidator.Object);

            // ASSERT
            Assert.Throws <ValidationException>(() => validator.IsValid(pokemon));
        }
Пример #4
0
 private bool CheckPokemon(IPokemonData pokemon)
 {
     return(PokemonValidator.Validate(pokemon)); //TODO: more
 }
Пример #5
0
        public Microsoft.AspNetCore.Mvc.ActionResult <dynamic> InsertPokemon(Pokemons newPokemon)
        {
            BindingList <string> errors    = new BindingList <string>();
            PokemonValidator     validator = new PokemonValidator();
            ValidationResult     results   = validator.Validate(newPokemon); //valida o pokemon que tá chegando

            if (results.IsValid == false)
            {
                foreach (ValidationFailure failure in results.Errors)
                {
                    errors.Add($"{failure.PropertyName}: {failure.ErrorMessage}");
                }

                return(errors);
            }

            using (IDbConnection conn = Connection)
            {
                conn.Open();
                Guid pokeguid     = Guid.NewGuid();
                int  rowsAffected = conn.QueryFirst <int>(@"INSERT INTO pokemons(
                                                        id, 
                                                        name, 
                                                        hp,
                                                        attack,
                                                        defense,
                                                        special_attack,
                                                        special_defense,
                                                        speed,
                                                        generation)
                                                        VALUES(
                                                        @pokemonguid,
                                                        @name,
                                                        @hp,
                                                        @attack,
                                                        @defense,
                                                        @special_attack,
                                                        @special_defense,
                                                        @speed,
                                                        @generation)",
                                                          new
                {
                    pokemonguid     = pokeguid,
                    name            = newPokemon.name,
                    hp              = newPokemon.hp,
                    attack          = newPokemon.attack,
                    defense         = newPokemon.defense,
                    special_attack  = newPokemon.special_attack,
                    special_defense = newPokemon.special_defense,
                    speed           = newPokemon.speed,
                    generation      = newPokemon.generation
                });

                if (newPokemon.types != null && newPokemon.types.Count > 0)
                {
                    foreach (var types in newPokemon.types)
                    {
                        int rowsAffectedAddresses = conn.QueryFirst <int>(@"INSERT INTO pokemon_types(
                                                                            id, pokemon_id, type_id)
                                                                            VALUES (@guidtipo, @pokemonguid, @guidtipotabela);",
                                                                          new
                        {
                            guidtipo       = Guid.NewGuid(),
                            pokemonguid    = pokeguid,
                            guidtipotabela = Guid.NewGuid()     //não vou conseguir mostrar os tipos por tempo e não entender direito como ir na outra tabela...Sorry
                        });
                    }
                }

                if (rowsAffected > 0)
                {
                    return(true);
                }
            }
            return(false);
        }