Ejemplo n.º 1
0
 public void QuandoReceberUmFornecedorExistenteDeveAtualizar()
 {
     _fornecedoresMock.Setup(x => x.Save(It.IsAny <Fornecedor>())).Callback((Fornecedor fornecedor) =>
     {
         Assert.IsNotNull(fornecedor);
         Assert.IsInstanceOfType(fornecedor, typeof(FornecedorParaAtualizacao));
         Assert.AreEqual("FORNEC0001", fornecedor.Codigo);
         Assert.AreEqual("FORNECEDOR 0001 ATUALIZADO", fornecedor.Nome);
         Assert.AreEqual("*****@*****.**", fornecedor.Email);
         Assert.AreEqual("cnpj alterado", fornecedor.Cnpj);
         Assert.AreEqual("municipio alterado", fornecedor.Municipio);
         Assert.AreEqual("uf", fornecedor.Uf);
         Assert.IsTrue(fornecedor.Transportadora);
     });
     _cadastroFornecedor.AtualizarFornecedores(new List <FornecedorCadastroVm>()
     {
         new FornecedorCadastroVm()
         {
             Codigo         = "FORNEC0001",
             Nome           = "FORNECEDOR 0001 ATUALIZADO",
             Email          = "*****@*****.**",
             Cnpj           = "cnpj alterado",
             Municipio      = "municipio alterado",
             Uf             = "uf",
             Transportadora = "X"
         }
     });
 }
        //para funcionar o binding de um xml para um array ou list a classe correspondente ao parâmetro 
        //deve ser decorada com a propriedade "[DataContract]" e as propriedades da classe que precisam
        //ser serializadas devem ser decoradas com a propriedade "[DataMember]"
        //Se na origem da requisição o dado for um json isto não é necessário.
        //Ver explicação em: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
        public HttpResponseMessage PostMultiplo([FromBody] ListaFornecedores fornecedores)
        {
            ApiResponseMessage retornoPortal;
            try
            {
                var fornecedoresComNome = fornecedores.Where(x => !string.IsNullOrEmpty(x.Nome)).ToList();
                int quantidadeDeFornecedoresSemNome = fornecedores.Count - fornecedoresComNome.Count;
                _cadastroFornecedor.AtualizarFornecedores(fornecedoresComNome);
                retornoPortal = new ApiResponseMessage()
                    {
                        Retorno = new Retorno() {Codigo = "200", Texto = fornecedoresComNome.Count + " fornecedores atualizados." +
                        (quantidadeDeFornecedoresSemNome > 0 ? quantidadeDeFornecedoresSemNome +  " fornecedores não atualizados: "  + 
                        string.Join(", ",fornecedores.Where(x => string.IsNullOrEmpty(x.Nome)).Select(f => f.Codigo)) + ".": "") }
                    };
                return Request.CreateResponse(HttpStatusCode.OK, retornoPortal);
            }

            catch (Exception ex)
            {
                retornoPortal = ExceptionUtil.GeraExecaoDeErroParaWebApi(ex);
                return Request.CreateResponse(HttpStatusCode.OK, retornoPortal);
            }
        }