Beispiel #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));
        }
Beispiel #2
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 #3
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");
        }
Beispiel #4
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>();
        }
Beispiel #5
0
        public void AdicionarItem_When_Pedido_Is_Null_Should_Throw_Exception()
        {
            //arrange

            //act
            Action action = () => pedidoManager.AdicionarItem(null, "123", 7);

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