예제 #1
0
        public async Task<IHttpActionResult> Post(Cliente cliente)
        {
            if (cliente == null)
                return BadRequest("Cliente não pode ser nulo");

            if (cliente.Id != 0)
                return BadRequest("Id do cliente inválido");

            try
            {
                await Task.FromResult(_repo.Salvar(cliente));
                //return CreatedAtRoute("DefaultApi", new { id = cliente.Id }, cliente);

                var location = Request == null ? "" :
                    string.Format("{0}/{1}", Request.RequestUri, cliente.Id).Replace("//","/");

                return Created(location, cliente);

            }
            catch (Exception ex)
            {
                if (ex.InnerException != null && ex.InnerException.ToString().Contains("UQ_dbo.Cliente.Nome-Nascimento"))
                    return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Já existe um cliente com este nome e essa data de nascimento"));

                return InternalServerError(ex);
            }

        }
예제 #2
0
        public async Task<IHttpActionResult> Put(int id,Cliente cliente)
        {

            if (cliente == null)
                return BadRequest("Cliente não pode ser nulo");

            if (id != cliente.Id)
                return BadRequest("Os id's não conferem");

            await Task.FromResult(_repo.Salvar(cliente));

            return StatusCode(HttpStatusCode.NoContent);
        }
예제 #3
0
        public Cliente Salvar(Cliente cliente)
        {
            if (cliente.Id == 0)
            {
                _ctx.Clientes.Add(cliente);
            }
            else
            {
                _ctx.Entry(cliente).State = EntityState.Modified;
            }

            SalvarContexto();

            return cliente;
        }
예제 #4
0
        public void Verificando_o_comportamento_do_método_Salvar_adicionando_cliente()
        {
            //arrange
            var id = 0;
            var cliente = new Cliente { Id = id, Nome = "teste de cliente", Sexo = Sexo.Masculino, Nascimento = new DateTime() };

            var mockRep = new Mock<IClienteRepositorio>();
            mockRep.Setup(mr => mr.Salvar(cliente)).Returns(() =>
            {
                cliente.Id = ClienteStub.ObterClientes.Count + 1;
                return cliente;
            });

            //act
            var dado = mockRep.Object.Salvar(cliente);

            //assert
            Assert.AreNotEqual(id, dado.Id);
            Assert.AreEqual(cliente.Nome, dado.Nome);
            Assert.AreEqual(cliente.Sexo, dado.Sexo);
            Assert.AreEqual(cliente.Nascimento, dado.Nascimento);
        }
예제 #5
0
        public async Task Post_deverá_adicionar_o_cliente_e_retornar_o_caminho_do_mesmo()
        {
            //Arrange
            var cliente = new Cliente { Nome = "Novo Cliente", Sexo = CadCli.Dominio.Enums.Sexo.Masculino, Nascimento = new DateTime() };
            var repo = new ClienteRepositorioStub();
            var controller = new ClientesController(repo);

            //Action
            var result = await controller.Post(cliente) as CreatedNegotiatedContentResult<Cliente>;

            //Assert
            Assert.IsNotNull(result);
            //Assert.AreEqual(result.RouteName, "DefaultApi");
            //Assert.AreEqual(result.RouteValues["id"], result.Content.Id);
            Assert.AreEqual(result.Content.Nome, cliente.Nome);

            controller.Dispose();
            repo.Dispose();
        }
예제 #6
0
        public Cliente Salvar(Cliente cliente)
        {
            if (cliente.Id == 0)
            {
                var newId = _autoNumID;
                cliente.Id = newId;
                Clientes.Add(cliente);
                _autoNumID++;
            }
            else
            {
                var _cli = ObterPorId(cliente.Id);
                _cli = cliente;
            }

            return cliente;

        }
예제 #7
0
        public async Task Post_deverá_falhar_qdo_o_cliente_já_possuir_um_Id()
        {
            //Arrange
            var cliente = new Cliente { Id = 1, Nome = "Novo Cliente", Sexo = CadCli.Dominio.Enums.Sexo.Masculino, Nascimento = new DateTime() };
            var repo = new ClienteRepositorioStub();
            var controller = new ClientesController(repo);

            //Action
            var result = await controller.Post(cliente) as BadRequestErrorMessageResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("Id do cliente inválido", result.Message);

            controller.Dispose();
            repo.Dispose();
        }