Пример #1
0
        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);
        }
Пример #5
0
        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);
        }