示例#1
0
        public void AlterarItem_ItemValido_DeveTerSucesso()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(1, (Quantidade)10, (Preco)1.99m);

            //Act
            Result result = pedido.AlterarItem(0, (Quantidade)10, (Preco)2.99m);

            //Assert
            result.IsSuccess.ShouldBeTrue();
            pedido.Itens.Count.ShouldBe(1);
            pedido.Total.Valor.ShouldBe(29.90m);
        }
示例#2
0
        public void AlterarItem_PedidoCancelado_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(2, new Quantidade(10), (Preco)1.99m);
            pedido.CancelarPedido();

            //Act
            Result result = pedido.AlterarItem(2, new Quantidade(1), (Preco)1.99m);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PedidosConstantes.PedidoCanceladoNaoPodeSerAlterado);
            pedido.Status.ShouldBe(StatusPedido.Cancelado);
        }
示例#3
0
        public void AlterarItem_ItemInvalido_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(1, (Quantidade)10, (Preco)1.99m);

            //Act
            Result result = pedido.AlterarItem(0, null, (Preco)2.99m);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PedidosConstantes.ItensPedidoQuantidadeEhObrigatorio);
            pedido.Itens.Count.ShouldBe(1);
            pedido.Total.Valor.ShouldBe(19.90m);
        }
示例#4
0
        public void AlterarItem_ItemInexistente_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;
            int    idItem = 1;

            pedido.AdicionarItem(1, (Quantidade)10, (Preco)1.99m);

            //Act
            Result result = pedido.AlterarItem(idItem, null, (Preco)2.99m);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(string.Format(PedidosConstantes.PedidosItemInformadoNaoFoiLocalizado, idItem));
            pedido.Itens.Count.ShouldBe(1);
            pedido.Total.Valor.ShouldBe(19.90m);
        }
示例#5
0
        public void AlterarItem_PedidoFechado_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(2, new Quantidade(10), (Preco)1.99m);
            pedido.FecharPedido(5, 0, 0, TipoDesconto.Valor);

            //Act
            Result result = pedido.AlterarItem(2, new Quantidade(1), (Preco)1.99m);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PedidosConstantes.PedidoFechadoNaoPodeSerAlterado);
            pedido.Itens.Count.ShouldBe(1);
            pedido.Total.Valor.ShouldBe(19.9m);
            pedido.Status.ShouldBe(StatusPedido.Fechado);
        }