public void QuandoCadastroUmaListaDeProdutosTudoDeveEstarDentroDeUmaUnicaTransacao() { _cadastroProduto.AtualizarProdutos(_produtosPadrao); _unitOfWorkMock.Verify(x => x.BeginTransaction(), Times.Once()); _unitOfWorkMock.Verify(x => x.Commit(), Times.Once()); _unitOfWorkMock.Verify(x => x.RollBack(), Times.Never()); }
//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] ListaProdutos produtos) { ApiResponseMessage retornoPortal; try { _cadastroProduto.AtualizarProdutos(produtos); retornoPortal = new ApiResponseMessage() { Retorno = new Retorno() { Codigo = "200", Texto = produtos.Count + " produtos atualizados" } //retorno = new retorno() { retCodigo = "200", retTexto = produtos.Produtos.Count + " produtos atualizados" } }; return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal)); } catch (Exception ex) { string detalhes = ""; if (produtos == null) { detalhes = "A lista de produtos esta nula"; } else if (produtos.Count == 0) { detalhes = "A lista de produtos esta vazia"; } else { for (int i = 0; i < produtos.Count; i++) { detalhes += "Produto " + i + ": Codigo: " + (string.IsNullOrEmpty(produtos[i].Codigo) ? "nulo" : produtos[i].Codigo) + " - Tipo: " + (string.IsNullOrEmpty(produtos[i].Tipo) ? "nulo" : produtos[i].Tipo + " - Descricao: " + (string.IsNullOrEmpty(produtos[i].Descricao) ? "nulo": produtos[i].Descricao)); } } retornoPortal = new ApiResponseMessage() { Retorno = new Retorno() { Codigo = "500", Texto = "Erro interno. Mensagem: " + ex.Message + (ex.InnerException != null ? " - Excecao Interna: " + ex.InnerException.Message : "") + " - Pilha de Execucao: " + ex.StackTrace + " - Detalhes: " + detalhes } }; return(Request.CreateResponse(HttpStatusCode.OK, retornoPortal)); } }