Ejemplo n.º 1
0
        public void Pedido_Criar_DeveTerSucesso()
        {
            //Arrange & Act
            Result <Pedido> pedido = new PedidoTestBuilder().Build();

            //Assert
            pedido.IsSuccess.ShouldBeTrue();
        }
Ejemplo n.º 2
0
        public void Criar_MesaIdInvalido_DeveFalhar()
        {
            //Arrange & Act
            Result <Pedido> pedido = new PedidoTestBuilder()
                                     .ComMesaId(0)
                                     .Build();

            //Assert
            pedido.IsFailure.ShouldBeTrue();
            pedido.Error.ShouldContain(PedidosConstantes.PedidosMesaIdNaoEhValido);
        }
Ejemplo n.º 3
0
        public void Criar_NomeClienteVazio_DeveFalhar()
        {
            //Arrange & Act
            Result <Pedido> pedido = new PedidoTestBuilder()
                                     .ComNomeCliente("")
                                     .Build();

            //Assert
            pedido.IsFailure.ShouldBeTrue();
            pedido.Error.ShouldContain(PedidosConstantes.PedidosNomeClienteEhObrigatorio);
        }
Ejemplo n.º 4
0
        public void Criar_NomeClienteNumeroCaracteresAcimaLimite_DeveFalhar()
        {
            //Arrange & Act
            Result <Pedido> pedido = new PedidoTestBuilder()
                                     .ComNomeCliente("João da Silva".PadRight(PedidosConstantes.PedidosTamanhoNomeCliente + 5))
                                     .Build();

            //Assert
            pedido.IsFailure.ShouldBeTrue();
            pedido.Error.ShouldContain(PedidosConstantes.PedidosNomeClienteDeveTerNoMaxmimoNCaracteres);
        }
Ejemplo n.º 5
0
        public void Cancelar_PedidoJaCancelado_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            //Act
            pedido.CancelarPedido();
            var result = pedido.CancelarPedido();

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PedidosConstantes.PedidoJaFoiCancelado);
        }
Ejemplo n.º 6
0
        public void Pedido_Cancelar_DeveTerSucesso()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            //Act
            var result = pedido.CancelarPedido();

            //Assert
            result.IsSuccess.ShouldBeTrue();
            pedido.Comissao.ShouldBeNull();
            pedido.Desconto.ShouldBeNull();
        }
Ejemplo n.º 7
0
        public void AdicionarItem_PrimeiroItemEhInvalido_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            //Act
            Result result = pedido.AdicionarItem(2, null, (Preco)1.99m);

            //Assert
            result.IsFailure.ShouldBeTrue();
            pedido.Itens.Count.ShouldBe(0);
            pedido.Total.Valor.ShouldBe(0);
            pedido.Status.ShouldBe(StatusPedido.Novo);
        }
Ejemplo n.º 8
0
        public void FecharPedido_PercentualDescontoAcimaLimite_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(1, new Quantidade(1), new Preco(100));

            //Act
            Result result = pedido.FecharPedido(0, 0, (PedidosConstantes.PercentualMaximo + 0.1m) * 100, TipoDesconto.Percentual);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PedidosConstantes.PercentualDescontoNaoDeveUltrapassarPercentualMaximo);
            pedido.Status.ShouldBe(StatusPedido.EmAndamento);
        }
Ejemplo n.º 9
0
        public void FecharPedido_ValoresValidos_DeveTerSucesso(decimal valorItem, decimal desconto, TipoDesconto tipo, decimal gorjeta, decimal comissao, decimal totalEsperado)
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(1, new Quantidade(1), new Preco(valorItem));

            //Act
            Result result = pedido.FecharPedido(comissao, gorjeta, desconto, tipo);

            //Assert
            result.IsSuccess.ShouldBeTrue();
            Math.Round(pedido.Total, 2).ShouldBe(totalEsperado);
            pedido.Status.ShouldBe(StatusPedido.Fechado);
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
0
        public void FecharPedido_ValorComissaoInvalido_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(1, new Quantidade(1), new Preco(100));

            //Act
            Result result = pedido.FecharPedido(-1, 0, 0, TipoDesconto.Valor);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PercentualConstantes.PercentualNaoDeveSerMenorQueZero);
            pedido.Status.ShouldBe(StatusPedido.EmAndamento);
        }
Ejemplo n.º 12
0
        public void FecharPedido_StatusDiferenteEmAndamento_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

            pedido.AdicionarItem(1, new Quantidade(1), new Preco(100));
            pedido.CancelarPedido();

            //Act
            Result result = pedido.FecharPedido(5, 0, 0, TipoDesconto.Valor);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PedidosConstantes.PedidoDeveEstarEmAndamento);
            pedido.Status.ShouldBe(StatusPedido.Cancelado);
        }
Ejemplo n.º 13
0
        public void RemoverItem_PedidoCancelado_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

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

            //Act
            Result result = pedido.RemoverItem(1);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(PedidosConstantes.PedidoCanceladoNaoPodeSerAlterado);
            pedido.Status.ShouldBe(StatusPedido.Cancelado);
        }
Ejemplo n.º 14
0
        public void RemoverItem_IdValido_DeveTerSucesso()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;
            int    idItem = 0;

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

            //Act
            Result result = pedido.RemoverItem(idItem);

            //Assert
            result.IsSuccess.ShouldBeTrue();
            pedido.Itens.Count.ShouldBe(0);
            pedido.Total.Valor.ShouldBe(0);
        }
Ejemplo n.º 15
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);
        }
Ejemplo n.º 16
0
        public void AdicionarItem_ItemValido_DeveTerSucesso()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

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

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

            //Assert
            result.IsSuccess.ShouldBeTrue();
            pedido.Itens.Count.ShouldBe(2);
            pedido.Total.Valor.ShouldBe(21.89m);
            pedido.Status.ShouldBe(StatusPedido.EmAndamento);
        }
Ejemplo n.º 17
0
        public void AdicionarItem_ItemInvalido_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;

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

            //Act
            Result result = pedido.AdicionarItem(2, null, (Preco)1.99m);

            //Assert
            result.IsFailure.ShouldBeTrue();
            pedido.Itens.Count.ShouldBe(1);
            pedido.Total.Valor.ShouldBe(19.90m);
            pedido.Status.ShouldBe(StatusPedido.EmAndamento);
        }
Ejemplo n.º 18
0
        public void RemoverItem_IdInvalido_DeveFalhar()
        {
            //Arrange
            Pedido pedido = new PedidoTestBuilder().Build().Value;
            int    idItem = 1;

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

            //Act
            Result result = pedido.RemoverItem(idItem);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(string.Format(PedidosConstantes.PedidosItemInformadoNaoFoiLocalizado, idItem));
            pedido.Itens.Count.ShouldBe(1);
            pedido.Total.Valor.ShouldBe(19.90m);
        }
Ejemplo n.º 19
0
        public void RemoverItem_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.RemoverItem(1);

            //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);
        }