public AnuncioAdicionarResponse Adicionar(AnuncioAdicionarRequest request)
        {
            // Criei o UnitOfWork para mostrar um controle de transação com o dapper quando for preciso
            using (_unitOfWork)
            {
                // Inicia a transação
                _unitOfWork.BeginTransaction();

                // Faz o mapeamento para a model e chama a service
                Anuncio requestModel  = _mapper.Map <Anuncio>(request);
                Anuncio responseModel = _anuncioService.Adicionar(requestModel);

                // Commit ou RollBack
                if (responseModel.Erros != null && responseModel.Erros.Any())
                {
                    _unitOfWork.RollBack();
                }
                else
                {
                    _unitOfWork.CommitTransaction();
                }

                // Mapemento do response e retorna para a api
                AnuncioAdicionarResponse response = _mapper.Map <AnuncioAdicionarResponse>(responseModel);
                return(response);
            }
        }
示例#2
0
        public void Deve_Retornar_Uma_Lista_De_Erros_Quando_So_Passar_A_Marca(string marca)
        {
            _anuncioAppService = _services.GetService <IAnuncioAppService>();
            AnuncioAdicionarRequest request = new AnuncioAdicionarRequest
            {
                Marca = marca,
            };

            _anuncioRepositoryMock.Setup(r => r.Adicionar(It.IsAny <Anuncio>())).Returns(_faker.Random.Number(1, 100));
            AnuncioAdicionarResponse response = _anuncioAppService.Adicionar(request);

            Assert.True(response.Id == 0);
            Assert.True(response.Erros.Any());
        }
示例#3
0
        public void Deve_Retornar_Uma_Mensagem_Marca_Obrigatoria_Quando_Nao_Passar_A_Marca_No_Adicionar()
        {
            _anuncioAppService = _services.GetService <IAnuncioAppService>();
            AnuncioAdicionarRequest request = new AnuncioAdicionarRequest
            {
                Marca         = "",
                Modelo        = _faker.Vehicle.Model(),
                Versao        = _faker.Vehicle.Vin(),
                Ano           = _faker.Random.Number(4, 4),
                Quilometragem = _faker.Random.Number(1, 3),
            };

            AnuncioAdicionarResponse response = _anuncioAppService.Adicionar(request);

            Assert.Contains(response.Erros, x => x.Descricao == "Marca é obrigatório" && x.Codigo == 400);
        }
示例#4
0
        public void Deve_Adicionar_Quando_Todos_Os_Campos_Estao_Preenchidos()
        {
            _anuncioAppService = _services.GetService <IAnuncioAppService>();
            AnuncioAdicionarRequest request = new AnuncioAdicionarRequest
            {
                Marca         = _faker.Vehicle.Type(),
                Modelo        = _faker.Vehicle.Model(),
                Versao        = _faker.Vehicle.Vin(),
                Ano           = _faker.Random.Number(2000, 2020),
                Quilometragem = _faker.Random.Number(100000),
            };

            _anuncioRepositoryMock.Setup(r => r.Adicionar(It.IsAny <Anuncio>())).Returns(_faker.Random.Number(1, 100));
            AnuncioAdicionarResponse response = _anuncioAppService.Adicionar(request);

            Assert.True(response.Id > 0);
            Assert.True(!response.Erros.Any());
        }
        public IActionResult Adicionar(AnuncioAdicionarRequest request)
        {
            AnuncioAdicionarResponse response = _anuncioAppService.Adicionar(request);

            return(Ok(response));
        }