コード例 #1
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);
        }
コード例 #2
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);
        }
コード例 #3
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);
        }
コード例 #4
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);
        }
コード例 #5
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);
        }