Beispiel #1
0
        public void CriarPedido_When_Cliente_Null_Should_Throw_Exception(string cliente)
        {
            //arrange

            //act
            Action action = () => pedidoManager.CriarPedido(cliente);

            //assert
            //Assert.ThrowsException<ArgumentNullException>(action);

            action
            .Should()
            .Throw <ArgumentNullException>()
            .Which.ParamName.Should().Be("cliente");
        }
Beispiel #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);
        }
Beispiel #3
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));
        }
Beispiel #4
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");
        }
Beispiel #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);
        }
Beispiel #6
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");
        }
Beispiel #7
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();
        }
Beispiel #8
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");
        }
Beispiel #9
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);
        }
Beispiel #10
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");
        }
Beispiel #11
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));
        }