コード例 #1
0
        public void AdicionarItem_Produto_Nao_Encontrado()
        {
            //arrange
            pedidoDALMock
            .Setup(x => x.Create("José da Silva"))
            .Returns(new Model.Pedido()
            {
                Id      = 1000,
                Cliente = "José da Silva",
                Itens   = new List <Model.ItemPedido>(),
                Status  = Model.PedidoStatus.Aberto,
                Total   = 0
            });

            KeyNotFoundException exception = new KeyNotFoundException();

            produtoDALMock
            .Setup(x => x.Get("abc"))
            .Throws(exception)
            .Verifiable();

            var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);
            var pedido        = pedidoManager.CriarPedido("José da Silva");

            //act
            Action action = () => pedidoManager.AdicionarItem(pedido, "abc", 1);

            //assert
            action.Should().Throw <ProdutoNaoEncontradoException>();
            produtoDALMock.Verify();
            loggerMock.Verify(x => x.Error(exception.Message, exception));
        }
コード例 #2
0
        //[ExpectedException(typeof(ApplicationException))]
        public void CriarPedido_Erro_BancoDeDados()
        {
            //Arrange
            pedidoDALmock
            .Setup(x => x.Create(It.IsAny <string>()))
            .Throws(new ApplicationException("Erro ao criar pedido no banco de dados."))
            .Verifiable();

            loggerMock
            .Setup(x => x.Error("Erro ao criar pedido no banco de dados."))
            .Verifiable();

            //Act
            PedidoManager pedidoManager
                = new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            Action action = ()
                            => pedidoManager.CriarPedido("Fulano de Tal");

            //Assert
            action.Should().Throw <ApplicationException>()
            .And
            .Message.Should().Be("Erro ao criar pedido no banco de dados.");

            Mock.Verify(pedidoDALmock);
            Mock.Verify(loggerMock);
        }
コード例 #3
0
        public void AdicionarItem_Codigo_Invalido(string codigo)
        {
            //arrange
            pedidoDALMock
            .Setup(x => x.Create("José da Silva"))
            .Returns(new Model.Pedido()
            {
                Id      = 1000,
                Cliente = "José da Silva",
                Itens   = new List <Model.ItemPedido>(),
                Status  = Model.PedidoStatus.Aberto,
                Total   = 0
            });

            var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);
            var pedido        = pedidoManager.CriarPedido("José da Silva");

            //act
            Action action = () => pedidoManager.AdicionarItem(pedido, codigo, 1);

            //assert
            action.Should().Throw <ArgumentNullException>()
            .And
            .ParamName.Should().Be("codigo");
        }
コード例 #4
0
        public ActionResult FormularioPedido(FormularioPedidoViewModel model)
        {
            Arbol arbol = ArbolManager.GetArbol(model.IdArbol);

            if (ModelState.IsValid)
            {
                List <Arbol> arbolesOfrecidos = new List <Arbol>();
                foreach (var item in model.ArbolesSeleccionados)
                {
                    arbolesOfrecidos.Add(ArbolManager.GetArbol(Int32.Parse(item)));
                }
                Pedido pedido = new Pedido {
                    Arbol    = arbol,
                    Emisor   = UsuarioManager.Get(model.Emisor),
                    Receptor = UsuarioManager.Get(model.Receptor),
                    Oferta   = arbolesOfrecidos
                };
                PedidoManager.Nuevo(pedido);
                TempData["Msg"] = "El pedido fue realizado correctamente";
                return(RedirectToAction("Enviados", "Pedido"));
            }
            else
            {
                TempData["Msg"] = "No se pudo realizar el pedido";
                return(RedirectToAction("PedirTrueque", "Trueque", new { id = arbol.Id }));
            }
        }
コード例 #5
0
        public void CriarPedido_Cliente_Nao_Informado(string cliente)
        {
            //arrange
            var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);

            //act
            pedidoManager.CriarPedido(cliente);
        }
コード例 #6
0
        public void Ctor_When_ProdutoDAL_Is_Null_Should_Throw_Exception()
        {
            //arrange

            //act
            Action action = () => pedidoManager = new PedidoManager(mockPedidoDAL.Object, null);

            //assert
            action.Should().Throw <ArgumentNullException>()
            .Which.ParamName.Should().Be("produtoDAL");
        }
コード例 #7
0
        public void AdicionarItem_Pedido_Nulo()
        {
            //arrange
            var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);

            //act
            Action action = () => pedidoManager.AdicionarItem(null, "abc", 1);

            //assert
            action.Should().Throw <ArgumentNullException>()
            .And
            .ParamName.Should().Be("pedido");
        }
コード例 #8
0
        public void AdicionarItem_Pedido_Status_Invalido(int status)
        {
            //arrange
            var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);
            var pedido        = new Pedido()
            {
                Id = 1, Cliente = "José da Silva", Itens = new List <ItemPedido>(), Status = (PedidoStatus)status, Total = 0
            };

            //act
            Action action = () => pedidoManager.AdicionarItem(pedido, "abc", 1);

            //assert
            action.Should().Throw <StatusInvalidoException>();
        }
コード例 #9
0
        public void CriarPedido_Cliente_Nulo(string nomeCliente)
        {
            //Arrange

            //Act
            PedidoManager pedidoManager
                = new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            Action action = ()
                            => pedidoManager.CriarPedido(nomeCliente);

            //Assert
            action.Should().Throw <ArgumentNullException>()
            .And
            .ParamName.Should().Be("cliente");
        }
コード例 #10
0
        public void CriarPedido_Success(int pedidoId, string cliente)
        {
            //Red -> Green -> Refactor
            ///3 As
            //arrange - preparação

            //Mock = boneco/imitação/fantoche

            loggerMock
            .Setup(x => x.Info($"Pedido {pedidoId} gravado com sucesso."))
            //.Setup(x => x.Info(It.IsAny<string>()))
            .Verifiable();

            pedidoDALmock
            .Setup(x => x.Create(It.IsAny <string>()))
            .Returns(new Model.Pedido()
            {
                Id      = pedidoId,
                Total   = 0,
                Cliente = cliente,
                Status  = Model.PedidoStatus.Aberto,
                Itens   = new List <Model.ItemPedido>()
            })
            .Verifiable();

            IPedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            //act
            var pedido = pedidoManager.CriarPedido("Fulano de Tal");

            //assert
            Assert.AreEqual(cliente, pedido.Cliente);
            Assert.AreEqual(Model.PedidoStatus.Aberto, pedido.Status);
            Assert.AreEqual(0, pedido.Itens.Count);

            pedido.Id.Should().Be(pedidoId);
            pedido.Total.Should().Be(0);
            pedido.Cliente.Should().Be(cliente);
            pedido.Status.Should().Be(Model.PedidoStatus.Aberto);
            pedido.Itens.Should().BeEmpty();

            Mock.Verify(loggerMock);
            Mock.Verify(pedidoDALmock);
            //Mock.VerifyAll();
        }
コード例 #11
0
        public void CriarPedido_Erro_BancoDeDados()
        {
            //arrange
            pedidoDALMock
            .Setup(x => x.Create(It.IsAny <string>()))
            .Throws(new ApplicationException("Erro ao criar pedido no banco de dados."))
            .Verifiable();

            loggerMock
            .Setup(x => x.Error("Erro ao criar pedido no banco de dados."))
            .Verifiable();

            //act
            PedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);

            //assert
            var pedido = pedidoManager.CriarPedido("Fulano de Tal");
        }
コード例 #12
0
        public void CriarPedido_Success(int pedidoId, string cliente)
        {
            pedidoDALMock
            .Setup(x => x.Create(cliente))
            .Returns(new Model.Pedido()
            {
                Id      = pedidoId,
                Cliente = cliente,
                Itens   = new List <Model.ItemPedido>(),
                Status  = Model.PedidoStatus.Aberto,
                Total   = 0
            });

            loggerMock
            .Setup(x => x.Info($"Pedido {pedidoId} gravado com sucesso."))
            .Verifiable();

            //arrange
            IPedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);

            //act
            var pedido = pedidoManager.CriarPedido(cliente);

            //assert
            //Assert.AreEqual(Model.PedidoStatus.Aberto, pedido.Status);
            //Assert.AreEqual("Fulano de Tal", pedido.Cliente);
            //Assert.AreEqual(1000, pedido.Id);
            //Assert.AreEqual(0, pedido.Total);
            //Assert.AreEqual(0, pedido.Itens.Count);

            // Efetua todas as validações, mesmo que uma falhe
            using (new AssertionScope())
            {
                pedido.Id.Should().Be(pedidoId);
                pedido.Total.Should().Be(0);
                pedido.Status.Should().Be(Model.PedidoStatus.Aberto);
                pedido.Cliente.Should().Be(cliente);
                pedido.Itens.Should().BeEmpty();
            }

            Mock.Verify(pedidoDALMock);
            Mock.Verify(loggerMock);
            loggerMock.Verify(x => x.Info($"Pedido {pedidoId} gravado com sucesso."), Times.Once);
        }
コード例 #13
0
        public void AdicionarItem_Codigo_Invalido(string codigo)
        {
            //Arrange

            //Act
            PedidoManager pedidoManager =
                new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            var pedido = new Pedido();

            Action action = () =>
                            pedidoManager.AdicionarItem(pedido, codigo, 3);

            //Assert
            action
            .Should()
            .Throw <ArgumentException>()
            .And
            .ParamName.Should().Be("codigo");
        }
コード例 #14
0
        public void AdicionarItem_Quantidade_Invalida(int quantidade)
        {
            //Arrange

            //Act
            PedidoManager pedidoManager =
                new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            var pedido = new Pedido();

            Action action = () =>
                            pedidoManager.AdicionarItem(pedido, "abc", quantidade);

            //Assert
            action
            .Should()
            .Throw <ArgumentOutOfRangeException>()
            .And
            .ParamName.Should().Be("quantidade");
        }
コード例 #15
0
        public void AdicionarItem_Success()
        {
            //Arrange
            produtoDALmock
            .Setup(x => x.Get("abc"))
            .Returns(new Produto("abc", "Produto ABC", 10.59m))
            .Verifiable();

            //Act
            PedidoManager pedidoManager =
                new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            var pedido = new Pedido();

            pedido.Status = PedidoStatus.Aberto;

            pedidoManager.AdicionarItem(pedido, "abc", 123);

            //Assert
            pedido.Itens.Should().HaveCount(1);
        }
コード例 #16
0
        public void AdicionarItem_Quantidade_Invalida(int quantidade)
        {
            //arrange
            pedidoDALMock
            .Setup(x => x.Create("José da Silva"))
            .Returns(new Model.Pedido()
            {
                Id      = 1000,
                Cliente = "José da Silva",
                Itens   = new List <Model.ItemPedido>(),
                Status  = Model.PedidoStatus.Aberto,
                Total   = 0
            });
            var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);
            var pedido        = pedidoManager.CriarPedido("José da Silva");

            //act
            Action action = () => pedidoManager.AdicionarItem(pedido, "abc", quantidade);

            //assert
            action.Should().Throw <ArgumentOutOfRangeException>()
            .And
            .ParamName.Should().Be("quantidade");
        }
コード例 #17
0
        public void AdicionarItem_Pedido_Status_Invalido(PedidoStatus pedidoStatus)
        {
            //Arrange
            produtoDALmock
            .Setup(x => x.Get("abc"))
            .Returns(new Produto("abc", "Produto ABC", 10.59m))
            .Verifiable();

            //Act
            PedidoManager pedidoManager =
                new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            var pedido = new Pedido();

            pedido.Status = pedidoStatus;

            Action action = () =>
                            pedidoManager.AdicionarItem(pedido, "abc", 123);

            //Assert
            action
            .Should()
            .Throw <StatusInvalidoException>();
        }
コード例 #18
0
        public void AdicionarItem_Produto_Nao_Encontrado()
        {
            //Arrange
            produtoDALmock
            .Setup(x => x.Get("abc"))
            .Throws(new KeyNotFoundException())
            .Verifiable();

            //Act
            PedidoManager pedidoManager =
                new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object);

            var pedido = new Pedido();

            pedido.Status = PedidoStatus.Aberto;

            Action action = () =>
                            pedidoManager.AdicionarItem(pedido, "abc", 123);

            //Assert
            action
            .Should()
            .Throw <ProdutoNaoEncontradoException>();
        }
コード例 #19
0
 // POST api/<controller>
 public void Post([FromBody] Pedido miPedido)
 {
     PedidoManager.GuardarPedido(miPedido);
 }
コード例 #20
0
 // GET api/<controller>
 public IEnumerable <Pedido> Get()
 {
     return(PedidoManager.ObtenerPedido());
 }
コード例 #21
0
 public PedidoAppService(PedidoManager pedidoManager)
 {
     this._pedidoManager = pedidoManager;
 }
コード例 #22
0
 public PedidoController()
 {
     this.pedidoNegocio = new PedidoManager();
 }
コード例 #23
0
 public ClienteAppService(ClienteManager clienteManager, PedidoManager pedido)
 {
     this._clienteManager = clienteManager;
     this.servicePedido   = pedido;
 }
コード例 #24
0
        public void AdicionarItem_Success(int produtoId, string codigo, int quantidade, double precoUnitario)
        {
            //arrange
            var p = new Model.Pedido()
            {
                Id      = 1000,
                Cliente = "José da Silva",
                Itens   = new List <Model.ItemPedido>(),
                Status  = Model.PedidoStatus.Aberto,
                Total   = 0
            };
            var i = new Model.ItemPedido(produtoId, quantidade, (decimal)precoUnitario);

            pedidoDALMock
            .Setup(x => x.Create("José da Silva"))
            .Returns(p)
            .Verifiable();

            pedidoDALMock
            .Setup(x => x.AddItem(p, i))
            .Callback(() =>
            {
                p.Itens.Add(i);
            })
            .Verifiable();

            KeyNotFoundException exception = new KeyNotFoundException();

            produtoDALMock
            .Setup(x => x.Get("abc"))
            .Returns(new Produto("abc", "produto abc", 10.0m)
            {
                Id = 1
            });

            produtoDALMock
            .Setup(x => x.Get("def"))
            .Returns(new Produto("def", "produto def", 20.0m)
            {
                Id = 2
            });

            produtoDALMock
            .Setup(x => x.Get("ghi"))
            .Returns(new Produto("ghi", "produto ghi", 30.0m)
            {
                Id = 3
            });

            var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object);
            var pedido        = pedidoManager.CriarPedido("José da Silva");

            //act
            var item = pedidoManager.AdicionarItem(pedido, codigo, quantidade);

            //assert
            produtoDALMock.Verify(x => x.Get(codigo));
            pedidoDALMock.Verify();

            pedido.Itens
            .Should().NotBeEmpty()
            .And
            .HaveCount(1)
            .And
            .Contain(new ItemPedido(produtoId, quantidade, (decimal)precoUnitario));
        }
コード例 #25
0
 public void TestInitialize()
 {
     this.mockPedidoDAL  = new Mock <IPedidoDAL>();
     this.mockProdutoDAL = new Mock <IProdutoDAL>();
     this.pedidoManager  = new PedidoManager(mockPedidoDAL.Object, mockProdutoDAL.Object);
 }