public void ShoppingCartWithDiscountWithFixedPriceBulkDiscountedLineItem2Test()
        {
            // arrange
            ShoppingCart shoppingCart = new ShoppingCart
            {
                HasCoupon = true,
                CouponTotalPriceThreshold = 10.00m,
                CouponDiscount = 1.00m
            };

            LineItem lineItem = new FixedPriceLineItem
            {
                ProductId = 1,
                Name = "Cheerios (non GMO)",
                UnitPrice = 2.00m,
                Quantity = 10,
                IsDiscounted = true,
                DiscountThreshold = 4
            };
            shoppingCart.Add(lineItem);

            //act
            decimal actualTotalPrice = shoppingCart.GetTotalPrice();

            // assert
            const decimal expectedTotalPrice = 15.00m;
            Assert.AreEqual(expectedTotalPrice, actualTotalPrice);
        }
        public void FixedPriceLineItemsSettersAndGetterTests2()
        {
            // arrange
            FixedPriceLineItem fixedPriceLineItem = new FixedPriceLineItem(productId: 1, name: "Cheerios (non GMO)", unitPrice: 2.00m, quantity: 3, isDiscounted: true, discountThreshold: 2);

            //act
            int actualProductId = fixedPriceLineItem.ProductId;
            string actualName = fixedPriceLineItem.Name;
            decimal actualUnitPrice = fixedPriceLineItem.UnitPrice;
            int actualQuantity = fixedPriceLineItem.Quantity;
            bool actualIsDiscounted = fixedPriceLineItem.IsDiscounted;
            int actualDiscountThreshold = fixedPriceLineItem.DiscountThreshold;

            // assert
            const int expectedProductId = 1;
            const string expectedName = "Cheerios (non GMO)";
            const decimal expectedUnitPrice = 2.00m;
            const int expectedQuantity = 3;
            const bool expectedIsDiscounted = true;
            const int expectedDiscountThreshold = 2;

            Assert.AreEqual(expectedProductId, actualProductId);
            Assert.AreEqual(expectedName, actualName);
            Assert.AreEqual(expectedUnitPrice, actualUnitPrice);
            Assert.AreEqual(expectedQuantity, actualQuantity);
            Assert.AreEqual(expectedIsDiscounted, actualIsDiscounted);
            Assert.AreEqual(expectedDiscountThreshold, actualDiscountThreshold);
        }
        public void PrintFixedPriceLineItemTest()
        {
            // arrange
            FixedPriceLineItem fixedPriceLineItem = new FixedPriceLineItem
            {
                ProductId = 1,
                Name = "Cheerios (non GMO)",
                UnitPrice = 2.00m,
                Quantity = 3,
                IsDiscounted = true,
                DiscountThreshold = 2
            };

            //act
            string fixedPriceLineItemString = fixedPriceLineItem.ToString();

            // assert
            Assert.AreNotEqual(0, fixedPriceLineItemString.Length);
        }
Beispiel #4
0
        private void Add(FixedPriceLineItem fixedPriceLineItem)
        {
            if (fixedPriceLineItem == null)
            {
                throw new ArgumentNullException("fixedPriceLineItem");
            }

            FixedPriceLineItem existingFixedPriceLineItem = _uniqueFixedPriceLineItemList.SingleOrDefault(p => p.ProductId == fixedPriceLineItem.ProductId);

            if (existingFixedPriceLineItem != null)
            {
                // if fixed price line item exists in shopping cart, then increment quantity
                existingFixedPriceLineItem.Quantity++;
            }
            else
            {
                // else add to shopping cart
                _uniqueFixedPriceLineItemList.Add(fixedPriceLineItem);
            }
        }