Esempio n. 1
0
        public void Checkout_WithDiscountCard_AmountOfSaleIsAddedToDiscountCard()
        {
            var sale         = new Sale();
            var discountCard = new DiscountCard(1000);

            sale.Add(new Product("A", 2000));
            sale.AddDiscountCard(discountCard);

            Assert.Equal(1, discountCard.CurrentPercent());
            Assert.Equal(1980, sale.Checkout());
            Assert.Equal(3, discountCard.CurrentPercent());
        }
Esempio n. 2
0
        public void Checkout_WithDiscountCard_DiscountAppliesToProductIfVolumeIsNotReached()
        {
            var sale1        = new Sale();
            var discountCard = new DiscountCard(1000);
            var product      = new Product("A", 2000, new VolumeDiscount(3000, 2));

            sale1.Add(product);
            sale1.AddDiscountCard(discountCard);

            Assert.Equal(1, discountCard.CurrentPercent());
            Assert.Equal(1980, sale1.Checkout());
            Assert.Equal(3, discountCard.CurrentPercent());
        }
Esempio n. 3
0
        public void Checkout_WithDiscountCard_NoDiscountForVolume()
        {
            var sale1        = new Sale();
            var product      = new Product("A", 2000, new VolumeDiscount(3000, 2));
            var discountCard = new DiscountCard(1000);

            sale1.Add(product);
            sale1.Add(product);
            sale1.AddDiscountCard(discountCard);

            Assert.Equal(1, discountCard.CurrentPercent());
            Assert.Equal(3000, sale1.Checkout());
            Assert.Equal(1, discountCard.CurrentPercent());
        }
Esempio n. 4
0
        public void Checkout_WithoutDiscountCard_DiscountCardDoesntApplyToNewSale()
        {
            var sale1        = new Sale();
            var discountCard = new DiscountCard(1000);
            var product      = new Product("A", 2000);

            sale1.Add(product);
            sale1.AddDiscountCard(discountCard);
            sale1.Checkout();
            var sale2 = new Sale();

            sale2.Add(product);

            Assert.Equal(3, discountCard.CurrentPercent());
            Assert.Equal(2000, sale2.Checkout());
            Assert.Equal(3, discountCard.CurrentPercent());
        }
Esempio n. 5
0
        public void Checkout_WithDiscountCard_DiscountCardAddsOnlyUnitPriceToBalance()
        {
            var sale         = new Sale();
            var discountCard = new DiscountCard(1000);
            var product      = new Product("A", 1000, new VolumeDiscount(2000, 3));

            sale.Add(product);
            sale.Add(product);
            sale.Add(product);
            sale.Add(product);

            sale.AddDiscountCard(discountCard);

            Assert.Equal(1000, discountCard.Balance);
            Assert.Equal(2990, sale.Checkout());
            Assert.Equal(2000, discountCard.Balance);
        }