Esempio n. 1
0
        public void PagueUmLeveDoisNaoDeveSerAplicavelQuandoQuantidadeForMenorQue2()
        {
            //Arrange
            var quantidade = 1;
            var promocao   = new PagueUmLeveDois();

            //Act
            var aplicavel = promocao.Aplicavel(quantidade);

            //Assert
            aplicavel.Should().BeFalse();
        }
Esempio n. 2
0
        public void PagueUmLeveDoisDeveSerAplicavelQuandoQuantidadeForMaiorOuIgualA2()
        {
            //Arrange
            var quantidade = 3;
            var promocao   = new PagueUmLeveDois();

            //Act
            var aplicavel = promocao.Aplicavel(quantidade);

            //Assert
            aplicavel.Should().BeTrue();
        }
        public static double Calcular(Produto produto)
        {
            switch (produto.Promocao)
            {
            case PromocaoEnum.PagueUmLeveDois:
                var pagueUmLeveDois = new PagueUmLeveDois();
                return(pagueUmLeveDois.CalculaPromocao(produto));

            case PromocaoEnum.TresPorDez:
                var tresPorDez = new TresPorDez();
                return(tresPorDez.CalculaPromocao(produto));

            default:
                return(produto.Quantidade * produto.Preco);
            }
        }
Esempio n. 4
0
        public void PagueUmLeveDoisDeveCalcularPrecoIgual10QuandoProdutoCustar10EQuantidadeFor2()
        {
            //Arrange
            var quantidade = 1;
            var produto    = new Produto()
            {
                Preco = 10
            };
            var promocao = new PagueUmLeveDois();

            //Act
            var preco = promocao.CalcularPreco(produto, quantidade);

            //Assert
            preco.Should().Be(10);
        }