Пример #1
0
        public async Task Consultar_Post_QuandoCepJaEstaCadastradoDeveSerExibidaAoUsuario()
        {
            // Arrange
            _db.Logradouros.Add(new Models.Logradouro()
            {
                Cep = "12345-678"
            });
            await _db.SaveChangesAsync();

            _viaCepService.Setup(x => x.BuscaLogradouro(It.IsAny <string>())).Returns(Task.FromResult(new ViewModels.ViaCepResponse()
            {
                Cep = "12345-678"
            }));

            var viewModel = new ConsultaCepViewModel()
            {
                Cep = "12345-678"
            };

            // Act
            var result = await _controller.Consultar(viewModel, "Consultar");

            // Assert
            Assert.NotNull(result);
            var viewResult  = Assert.IsType <ViewResult>(result);
            var modelResult = Assert.IsType <ConsultaCepViewModel>(viewResult.Model);

            Assert.Equal(viewModel.Cep, modelResult.Cep);
            Assert.False(_controller.ModelState.IsValid);
            Assert.Collection(_controller.ModelState.Values.SelectMany(a => a.Errors), item => Assert.Equal("CEP já cadastrado em nossa base de dados!", item.ErrorMessage));
        }
Пример #2
0
        public async Task Consultar_Post_QuandoHaErroNoRetornoDoCepMensagemDeveSerExibidaAoUsuario()
        {
            // Arrange
            _viaCepService.Setup(x => x.BuscaLogradouro(It.IsAny <string>())).Returns(Task.FromResult(new ViewModels.ViaCepResponse()
            {
                Erro = true
            }));

            var viewModel = new ConsultaCepViewModel()
            {
                Cep = "00000-000"
            };

            // Act
            var result = await _controller.Consultar(viewModel, "Consultar");

            // Assert
            Assert.NotNull(result);
            var viewResult  = Assert.IsType <ViewResult>(result);
            var modelResult = Assert.IsType <ConsultaCepViewModel>(viewResult.Model);

            Assert.Equal(viewModel.Cep, modelResult.Cep);
            Assert.False(_controller.ModelState.IsValid);
            Assert.Collection(_controller.ModelState.Values.SelectMany(a => a.Errors), item => Assert.Equal("CEP inválido ou não encontrado", item.ErrorMessage));
        }
Пример #3
0
        public async Task <ActionResult> Consultar(ConsultaCepViewModel viewModel, string value = "")
        {
            viewModel.Resposta = await this.viaCepApiService.BuscaLogradouro(viewModel.Cep);

            if (viewModel.Resposta.Erro)
            {
                ModelState.AddModelError("", "CEP inválido ou não encontrado");
            }
            else
            {
                var existeCepCadastrado = await context.Logradouros.AnyAsync(a => a.Cep.Equals(viewModel.Cep));

                if (existeCepCadastrado)
                {
                    ModelState.AddModelError("", "CEP já cadastrado em nossa base de dados!");
                }
            }

            if (ModelState.IsValid)
            {
                if (value.Equals("CadastrarNovoCep"))
                {
                    context.Logradouros.Add(new Models.Logradouro()
                    {
                        LogradouroId = Guid.NewGuid(),
                        Cep          = viewModel.Resposta.Cep,
                        Bairro       = viewModel.Resposta.Bairro,
                        Complemento  = viewModel.Resposta.Complemento,
                        Gia          = viewModel.Resposta.Gia,
                        Ibge         = viewModel.Resposta.Ibge,
                        Uf           = viewModel.Resposta.Uf,
                        Unidade      = viewModel.Resposta.Unidade,
                        Descricao    = viewModel.Resposta.Logradouro,
                        Localidade   = viewModel.Resposta.Localidade,
                        DDD          = viewModel.Resposta.DDD,
                        Siafi        = viewModel.Resposta.Siafi
                    });
                    await context.SaveChangesAsync();

                    TempData["success"] = "CEP cadastrado na base de dados!!";
                }

                if (Request?.IsAjaxRequest() ?? false)
                {
                    return(PartialView("_CepResultado", viewModel.Resposta));
                }
            }

            if (Request?.IsAjaxRequest() ?? false)
            {
                return(PartialView("_PesquisaCep", viewModel));
            }

            return(View("Indice", viewModel));
        }
Пример #4
0
        public async Task Consultar_Post_CadastrarCep()
        {
            // Arrange
            var resultCep = new ViaCepResponse()
            {
                Cep         = "12345-678",
                Logradouro  = "Rua Teste",
                Bairro      = "Bairro Teste",
                Complemento = "Complemento Teste",
                DDD         = "000",
                Uf          = "UF",
                Unidade     = "Unidade Teste",
                Gia         = "123",
                Ibge        = "123456",
                Localidade  = "Localidade Teste",
                Siafi       = "1234",
            };

            _viaCepService.Setup(x => x.BuscaLogradouro(It.IsAny <string>())).Returns(Task.FromResult(resultCep));

            var viewModel = new ConsultaCepViewModel()
            {
                Cep = "12345-678"
            };

            // Act
            var result = await _controller.Consultar(viewModel, "CadastrarNovoCep");

            // Assert
            Assert.NotNull(result);
            var viewResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("Indice", viewResult.ViewName);
            var modelResult = Assert.IsType <ConsultaCepViewModel>(viewResult.Model);

            Assert.Equal(viewModel.Cep, modelResult.Cep);
            Assert.Equal("CEP cadastrado na base de dados!!", _controller.TempData["success"]);
        }