Пример #1
0
        static void Main(string[] args)
        {
            Category category = new Category("Food");
            Product  banana   = new Product("Banana", 10, category);
            Product  apple    = new Product("Apple", 15, category);

            Category electronicCategory = new Category("Electronic");
            Product  samsung            = new Product("Samsung", 200, electronicCategory);
            Product  nokia = new Product("Nokia", 100, electronicCategory);

            CampaignFactory campaignFactory    = new CampaignFactory();
            AmountCampaign  campaignFood       = campaignFactory.ProduceCampaign(category, 25, 5, DiscountType.Amount) as AmountCampaign;
            AmountCampaign  campaignElectronic = campaignFactory.ProduceCampaign(electronicCategory, 50, 1, DiscountType.Amount) as AmountCampaign;

            DeliveryCostCalculator calculator = new DeliveryCostCalculator(1, 2, 2.99d);
            Cart shoppingCart = new Cart(calculator);

            shoppingCart.AddItem(banana, 8);
            shoppingCart.AddItem(apple, 5);
            shoppingCart.AddItem(samsung, 1);
            shoppingCart.AddItem(nokia, 2);
            shoppingCart.ApplyDiscounts(campaignFood, campaignElectronic);

            shoppingCart.Print();
        }
Пример #2
0
        public void ProduceCampaign_WhenCalledWithNullCategory_ThrowsException()
        {
            //Arrange
            CampaignFactory factory = new CampaignFactory();

            //Act && Assert
            var exception = Assert.Throws <ArgumentNullException>(() => factory.ProduceCampaign(null, 50, 10, DiscountType.Rate));

            Assert.Equal("Value cannot be null. (Parameter 'category')", exception.Message);
        }
Пример #3
0
        public void AddCampaign_WhenNewCampaignCreated_AddThatCampaignToCategory()
        {
            //Arrange & Act
            Category        foodCategory    = new Category("Food");
            CampaignFactory campaignFactory = new CampaignFactory();
            AmountCampaign  campaign        = campaignFactory.ProduceCampaign(foodCategory, 10, 2, Business.DiscountType.Amount) as AmountCampaign;

            //Assert
            Assert.Contains(campaign, foodCategory.campaigns);
        }
Пример #4
0
        public void ProduceCampaign_WhenCalledForRateCampaign_ReturnsRateCampaignObject()
        {
            //Arrange
            Category        category = new Category("Food");
            CampaignFactory factory  = new CampaignFactory();

            //Act
            ICampaign coupon = factory.ProduceCampaign(category, 50, 10, DiscountType.Rate);

            //Assert
            Assert.IsType <RateCampaign>(coupon);
        }
Пример #5
0
        public void GetDiscount_WhenCalledForAmountCampaign_ReturnsPercentageOfDiscount()
        {
            //Arrange
            double          discountRate     = 10;
            double          totalPrice       = 200;
            double          expectedDiscount = 20;
            Category        category         = new Category("Food");
            CampaignFactory factory          = new CampaignFactory();
            RateCampaign    campaign         = factory.ProduceCampaign(category, discountRate, 3, DiscountType.Rate) as RateCampaign;

            //Act
            double discount = campaign.GetDiscount(totalPrice);

            //Assert
            Assert.Equal(expectedDiscount, discount);
        }