public void FixedPriceLineItemWithCouponDiscountHasCorrectPriceTest() { // Arrange // unitPrice = 10.00m ILineItem fixedPriceLineItem1 = new FixedPriceLineItem(1); // quantity defaults to 1 ILineItem fixedPriceLineItem2 = new FixedPriceLineItem(1, 4); const decimal expectedPrice1 = 10.00m; const decimal expectedPrice2 = 25.00m; // Does not qualify for discount since price < discount CouponDiscountLineItem couponDiscountLineItem1 = new CouponDiscountLineItem(fixedPriceLineItem1) { CouponDiscount = 15.00m }; // Qualifies for discount since price > discount CouponDiscountLineItem couponDiscountLineItem2 = new CouponDiscountLineItem(fixedPriceLineItem2) { CouponDiscount = 15.00m }; // Act decimal actualPrice1 = couponDiscountLineItem1.GetPrice(); decimal actualPrice2 = couponDiscountLineItem2.GetPrice(); // Assert Assert.Multiple(() => { Assert.That(actualPrice1, Is.EqualTo(expectedPrice1)); Assert.That(actualPrice2, Is.EqualTo(expectedPrice2)); }); }
public void FixedPriceLineItemWithBulkDiscountHasCorrectPriceTest() { // Arrange const int id = 1; const int quantity = 3; // unitPrice = 10.00m ILineItem fixedPriceLineItem = new FixedPriceLineItem(id, quantity); const decimal expectedPrice1 = 27.00m; const decimal expectedPrice2 = 30.00m; // Lineitem is above bulk discount threshold of $20.00, therefore has 10% discount BulkDiscountLineItem bulkDiscountLineItem1 = new BulkDiscountLineItem(fixedPriceLineItem) { DiscountThreshold = 20.00m, DiscountPercentage = 10 }; // Lineitem is below bulk discount threshold of $40.00, therefore has no discount BulkDiscountLineItem bulkDiscountLineItem2 = new BulkDiscountLineItem(fixedPriceLineItem) { DiscountThreshold = 40.00m, DiscountPercentage = 10 }; // Act decimal actualPrice1 = bulkDiscountLineItem1.GetPrice(); decimal actualPrice2 = bulkDiscountLineItem2.GetPrice(); // Assert Assert.Multiple(() => { Assert.That(actualPrice1, Is.EqualTo(expectedPrice1)); Assert.That(actualPrice2, Is.EqualTo(expectedPrice2)); }); }
public void FixedPriceLineItemHasCorrectPriceTest() { // Arrange const int id = 1; const int quantity = 3; ILineItem fixedPriceLineItem = new FixedPriceLineItem(id, quantity); const decimal expectedPrice = 30m; // Act decimal actualPrice = fixedPriceLineItem.GetPrice(); // Assert Assert.That(actualPrice, Is.EqualTo(expectedPrice)); }
public void CouponDiscountWithNonPositiveDiscountPerecntageThrowsExceptionTest() { // Arrange ILineItem lineItem = new FixedPriceLineItem(1); // Assert Assert.Throws <Exception>(() => { // ReSharper disable once UnusedVariable CouponDiscountLineItem bulkDiscountLineItem = new CouponDiscountLineItem(lineItem) { CouponDiscount = -10m }; } ); }
public void ShoppingCartWithFixedPriceLineItemHasCorrectPriceTest() { // Arrange IShoppingCart shoppingCart = new ShoppingCart(); const int id = 1; const int quantity = 3; ILineItem fixedPriceLineItem = new FixedPriceLineItem(id, quantity); const decimal expectedPrice = 30.00m; // Act shoppingCart.Add(fixedPriceLineItem); decimal actualPrice = shoppingCart.GetPrice(); // Assert Assert.That(actualPrice, Is.EqualTo(expectedPrice)); }
public void BulkDiscountWithNonPositiveDiscountPerecntageThrowsExceptionTest() { // Arrange ILineItem lineItem = new FixedPriceLineItem(1); // Assert Assert.Throws <Exception>(() => { // ReSharper disable once UnusedVariable BulkDiscountLineItem bulkDiscountLineItem = new BulkDiscountLineItem(lineItem) { DiscountThreshold = 20.00m, DiscountPercentage = -10 }; } ); }
public void DoubleDiscountedLineItemHasCorrectPriceTest() { // Arrange // unitPrice = 10.00m ILineItem fixedPriceLineItem = new FixedPriceLineItem(1, 3); const decimal expectedPrice = 22.00m; BulkDiscountLineItem bulkDiscountLineItem = new BulkDiscountLineItem(fixedPriceLineItem) { DiscountThreshold = 20.00m, DiscountPercentage = 10 }; CouponDiscountLineItem couponDiscountLineItem = new CouponDiscountLineItem(bulkDiscountLineItem) { CouponDiscount = 5.00m }; // Act decimal actualPrice = couponDiscountLineItem.GetPrice(); // Assert Assert.That(actualPrice, Is.EqualTo(expectedPrice)); }