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