public void DeveCancelarPedidoAtivo() { bool resultadoEsperado = true; var pedido = FabricaPedido.CriarPedido(clienteParaTeste, itensParaTeste); string mensagem; var resultado = pedido.EValidoParaCancelar(out mensagem); Assert.AreEqual(resultadoEsperado, resultado); }
public void BuscarPedido() { Cliente clienteEsperado = new Cliente() { Id = 1, CPF = 12345678910, Nome = "Cliente Teste", Endereco = new Endereco() { Rua = "Rua Teste", Numero = 3, Complemento = "101" } }; List <Item> itensEsperados = new List <Item>() { new Item() { Id = 1, Descricao = "Item de Teste 1", Valor = 1.99M }, new Item() { Id = 2, Descricao = "Item de Teste 2", Valor = 1000 } }; var pedido = FabricaPedido.CriarPedido(clienteEsperado, itensEsperados); var repositorio = new RepositorioPedidoMongoDB(connectionString); var retorno = repositorio.CriarPedidoAsync(pedido); retorno.Wait(); var retorno2 = repositorio.BuscarPedidoAsync(pedido.Id); retorno2.Wait(); var pedidoSalvo = retorno2.Result; Assert.IsNotNull(pedidoSalvo); Assert.AreEqual(pedidoSalvo.Id, pedido.Id); Assert.IsNotNull(pedidoSalvo.Cliente); Assert.AreEqual(pedidoSalvo.Cliente.Id, pedido.Cliente.Id); Assert.IsNotNull(pedidoSalvo.Itens); foreach (var item in itensEsperados) { Assert.IsTrue(pedidoSalvo.Itens.Any(a => a.Id == item.Id)); } }
public void NaoPodeCriarPedidoSemItens() { bool resultadoEsperado = false; string mensagemEsperada = "Nenhum item informado."; var pedido = FabricaPedido.CriarPedido(clienteParaTeste, itensParaTeste); pedido.Itens = new List <Item>(); string mensagem; var resultado = pedido.EValidoParaCriar(out mensagem); Assert.AreEqual(resultadoEsperado, resultado); Assert.AreEqual(mensagemEsperada, mensagem); }
public void NaoPodeCriarPedidoSemCliente() { bool resultadoEsperado = false; string mensagemEsperada = "Cliente não informado."; var pedido = FabricaPedido.CriarPedido(clienteParaTeste, itensParaTeste); pedido.Cliente = null; string mensagem; var resultado = pedido.EValidoParaCriar(out mensagem); Assert.AreEqual(resultadoEsperado, resultado); Assert.AreEqual(mensagemEsperada, mensagem); }
public void NaoPodeCriarPedidoSemId() { bool resultadoEsperado = false; string mensagemEsperada = "Identificador não informado."; var pedido = FabricaPedido.CriarPedido(clienteParaTeste, itensParaTeste); pedido.Id = Guid.Empty; string mensagem; var resultado = pedido.EValidoParaCriar(out mensagem); Assert.AreEqual(resultadoEsperado, resultado); Assert.AreEqual(mensagemEsperada, mensagem); }
public void NaoPodeCriarPedidoCancelado() { bool resultadoEsperado = false; string mensagemEsperada = "O Pedido deve ser criado ativo."; var pedido = FabricaPedido.CriarPedido(clienteParaTeste, itensParaTeste); pedido.Estado = EstadoPedido.Cancelado; string mensagem; var resultado = pedido.EValidoParaCriar(out mensagem); Assert.AreEqual(resultadoEsperado, resultado); Assert.AreEqual(mensagemEsperada, mensagem); }
public void CriacaoDeUmNovoPedido() { var EstadoPedidoEsperado = EstadoPedido.Ativo; Cliente clienteEsperado = new Cliente() { CPF = 12345678910, Nome = "Cliente Teste", Endereco = new Endereco() { Rua = "Rua Teste", Numero = 3, Complemento = "101" } }; List <Item> itensEsperados = new List <Item>() { new Item() { Id = 1, Descricao = "Item de Teste 1", Valor = 1.99M }, new Item() { Id = 2, Descricao = "Item de Teste 2", Valor = 1000 } }; var pedido = FabricaPedido.CriarPedido(clienteEsperado, itensEsperados); Assert.IsNotNull(pedido, "Pedido nulo"); Assert.AreEqual(EstadoPedidoEsperado, pedido.Estado, "Estado diferente do esperado"); Assert.IsNotNull(pedido.Id, "Guid não gerado"); Assert.AreEqual(clienteEsperado, pedido.Cliente, "Cliente não cadastrado no Pedido"); Assert.AreEqual(itensEsperados, pedido.Itens, "Itens não cadastrados no Pedido"); string mensagem; Assert.IsTrue(pedido.EValidoParaCriar(out mensagem)); }
public void CriarPedido() { Cliente clienteEsperado = new Cliente() { Id = 1, CPF = 12345678910, Nome = "Cliente Teste", Endereco = new Endereco() { Rua = "Rua Teste", Numero = 3, Complemento = "101" } }; List <Item> itensEsperados = new List <Item>() { new Item() { Id = 1, Descricao = "Item de Teste 1", Valor = 1.99M }, new Item() { Id = 2, Descricao = "Item de Teste 2", Valor = 1000 } }; var pedido = FabricaPedido.CriarPedido(clienteEsperado, itensEsperados); var repositorio = new RepositorioPedidoMongoDB(connectionString); var retorno = repositorio.CriarPedidoAsync(pedido); retorno.Wait(); }
public void PublicarCopiaDePedido() { var servico = new MensageriaRabbitMQ("localhost"); Cliente cliente = new Cliente() { Id = 1, CPF = 12345678910, Nome = "Cliente Teste", Endereco = new Endereco() { Rua = "Rua Teste", Numero = 3, Complemento = "101" } }; List <Item> itens = new List <Item>() { new Item() { Id = 1, Descricao = "Item de Teste 1", Valor = 1.99M }, new Item() { Id = 2, Descricao = "Item de Teste 2", Valor = 1000 } }; var pedido = FabricaPedido.CriarPedido(cliente, itens); servico.GuardarCopia(pedido); }
public void BuscarPedidosPorCliente() { Cliente cliente = new Cliente() { Id = 10, CPF = 12345678910, Nome = "Cliente Teste", Endereco = new Endereco() { Rua = "Rua Teste", Numero = 3, Complemento = "101" } }; List <Pedido> pedidosEsperados = new List <Pedido>(); for (int i = 0; i < 5; i++) { var itens = new List <Item>() { new Item() { Id = i, Descricao = "Item de Teste 1", Valor = i } }; var pedido = FabricaPedido.CriarPedido(cliente, itens); pedidosEsperados.Add(pedido); } var repositorio = new RepositorioPedidoMongoDB(connectionString); pedidosEsperados.ForEach(pedido => { var retorno = repositorio.CriarPedidoAsync(pedido); retorno.Wait(); }); var retorno2 = repositorio.BuscarPedidosPorClienteAsync(cliente); retorno2.Wait(); var pedidosSalvos = retorno2.Result; pedidosEsperados.ForEach(pedido => { var pedidoSalvo = pedidosSalvos.First(a => a.Id == pedido.Id); Assert.IsNotNull(pedidoSalvo); Assert.AreEqual(pedidoSalvo.Id, pedido.Id); Assert.IsNotNull(pedidoSalvo.Cliente); Assert.AreEqual(pedidoSalvo.Cliente.Id, pedido.Cliente.Id); Assert.IsNotNull(pedidoSalvo.Itens); foreach (var item in pedido.Itens) { Assert.IsTrue(pedidoSalvo.Itens.Any(a => a.Id == item.Id)); } }); }
public void AtualizarPedido() { EstadoPedido estadoEsperado = EstadoPedido.Cancelado; Cliente clienteEsperado = new Cliente() { Id = 1, CPF = 12345678910, Nome = "Cliente Teste", Endereco = new Endereco() { Rua = "Rua Teste", Numero = 3, Complemento = "101" } }; List <Item> itensEsperados = new List <Item>() { new Item() { Id = 1, Descricao = "Item de Teste 1", Valor = 1.99M }, new Item() { Id = 2, Descricao = "Item de Teste 2", Valor = 1000 } }; var pedido = FabricaPedido.CriarPedido(clienteEsperado, itensEsperados); var repositorio = new RepositorioPedidoMongoDB(connectionString); var retorno = repositorio.CriarPedidoAsync(pedido); retorno.Wait(); var retorno2 = repositorio.BuscarPedidoAsync(pedido.Id); retorno2.Wait(); var pedidoSalvo = retorno2.Result; Assert.IsNotNull(pedidoSalvo); Assert.AreEqual(pedidoSalvo.Id, pedido.Id); Assert.IsNotNull(pedidoSalvo.Cliente); Assert.AreEqual(pedidoSalvo.Cliente.Id, pedido.Cliente.Id); Assert.IsNotNull(pedidoSalvo.Itens); foreach (var item in itensEsperados) { Assert.IsTrue(pedidoSalvo.Itens.Any(a => a.Id == item.Id)); } string mensagem; var resultadoCancelamento = pedidoSalvo.Cancelar(out mensagem); Assert.IsTrue(resultadoCancelamento); Assert.IsTrue(string.IsNullOrEmpty(mensagem)); var retorno3 = repositorio.AtualizarPedidoAsync(pedidoSalvo); retorno3.Wait(); var retorno4 = repositorio.BuscarPedidoAsync(pedido.Id); retorno4.Wait(); pedidoSalvo = retorno4.Result; Assert.IsNotNull(pedidoSalvo); Assert.AreEqual(pedidoSalvo.Id, pedido.Id); Assert.IsNotNull(pedidoSalvo.Cliente); Assert.AreEqual(pedidoSalvo.Cliente.Id, pedido.Cliente.Id); Assert.IsNotNull(pedidoSalvo.Itens); foreach (var item in itensEsperados) { Assert.IsTrue(pedidoSalvo.Itens.Any(a => a.Id == item.Id)); } Assert.AreEqual(estadoEsperado, pedidoSalvo.Estado); }
public async Task <RetornoCriarPedido> CriarPedidoAsync(CriacaoPedidoDTO criacaoPedidoDTO) { try { if (criacaoPedidoDTO == null) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = "criacaoPedidoDTO nulo." } } ; if (criacaoPedidoDTO.Cliente == null) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = "criacaoPedidoDTO.Cliente nulo." } } ; if (criacaoPedidoDTO.Itens == null || !criacaoPedidoDTO.Itens.Any()) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = "criacaoPedidoDTO.Itens nulo ou vazio." } } ; var cliente = await repositorioCliente.BuscarClienteAsync(criacaoPedidoDTO.Cliente.Id, criacaoPedidoDTO.Cliente.Versao); List <Item> itens = new List <Item>(); foreach (var itemDTO in criacaoPedidoDTO.Itens) { var item = await repositorioItem.BuscarItemAsync(itemDTO.Id, itemDTO.Versao); if (item == null) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = $"Item inválido ou não encontrado. Id {itemDTO.Id}" } } ; itens.Add(item); } var pedido = FabricaPedido.CriarPedido(cliente, itens); string mensagemValidacao; if (!pedido.EValidoParaCriar(out mensagemValidacao)) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = mensagemValidacao } } ; await repositorioPedido.CriarPedidoAsync(pedido); servicoMensageria.GuardarCopia(pedido); return(new RetornoCriarPedido() { Sucesso = true, Id = pedido.Id }); } catch (Exception ex) { logger.LogError(ex, "Erro.", criacaoPedidoDTO); return(new RetornoCriarPedido() { Sucesso = false, Mensagem = MENSAGEM_ERRO_GERNERICO }); } }