public void TenPercentDiscount() { // ARRANGE SupermarketCatalog catalog = new FakeCatalog(); var toothbrush = new Product("toothbrush", ProductUnit.Each); catalog.AddProduct(toothbrush, 0.99); var apples = new Product("apples", ProductUnit.Kilo); catalog.AddProduct(apples, 1.99); var cart = new ShoppingCart(); cart.AddItemQuantity(apples, 2.5); var teller = new Teller(catalog); teller.AddSpecialOffer(SpecialOfferType.TenPercentDiscount, toothbrush, 10.0); // ACT var receipt = teller.ChecksOutArticlesFrom(cart); // ASSERT Assert.Equal(4.975, receipt.GetTotalPrice()); Assert.Equal(new List <Discount>(), receipt.GetDiscounts()); Assert.Single(receipt.GetItems()); var receiptItem = receipt.GetItems()[0]; Assert.Equal(apples, receiptItem.Product); Assert.Equal(1.99, receiptItem.Price); Assert.Equal(2.5 * 1.99, receiptItem.TotalPrice); Assert.Equal(2.5, receiptItem.Quantity); }
public void AddMultipleTimesSameProduct() { // ARRANGE var cart = new ShoppingCart(); cart.AddItemQuantity(Apples, 2.5); cart.AddItemQuantity(Apples, 1.5); cart.AddItemQuantity(Apples, 3); // ACT var teller = CreateTeller(); var receipt = teller.ChecksOutArticlesFrom(cart); // ASSERT var printReceipt = new ReceiptPrinter().PrintReceipt(receipt); Approvals.Verify(printReceipt); }
public void With10PercentDiscount() { // ARRANGE var cart = new ShoppingCart(); cart.AddItemQuantity(Apples, 2.5); cart.AddItemQuantity(Toothbrush, 3); var teller = CreateTeller(); teller.AddSpecialOffer(SpecialOfferType.TenPercentDiscount, Toothbrush, 10.0); // ACT var receipt = teller.ChecksOutArticlesFrom(cart); // ASSERT var printReceipt = new ReceiptPrinter().PrintReceipt(receipt); Approvals.Verify(printReceipt); }
public void WithoutDiscount() { // ARRANGE var cart = new ShoppingCart(); cart.AddItemQuantity(Apples, 2.5); // ACT var teller = CreateTeller(); var receipt = teller.ChecksOutArticlesFrom(cart); // ASSERT var printReceipt = new ReceiptPrinter().PrintReceipt(receipt); Approvals.Verify(printReceipt); }
public void GivenProductWithNoDiscount_WhenCheckOut_ThenReturnTotalProductPrice() { Product apples = new Product("apples", ProductUnit.Kilo); catalog.AddProduct(apples, 1.99); cart.AddItemQuantity(apples, 2.5); teller = new Teller(catalog); Receipt receipt = teller.ChecksOutArticlesFrom(cart); Assert.That(receipt.GetTotalPrice(), Is.EqualTo(4.975)); Assert.AreEqual(new List <Discount>(), receipt.GetDiscounts()); Assert.That(receipt.GetItems(), Has.Exactly(1).Items); ReceiptItem receiptItem = receipt.GetItems()[0]; Assert.AreEqual(apples, receiptItem.Product); Assert.AreEqual(1.99, receiptItem.Price); Assert.AreEqual(2.5 * 1.99, receiptItem.TotalPrice); Assert.AreEqual(2.5, receiptItem.Quantity); }