예제 #1
0
        public void CreateReturnsAnInstanceTest()
        {
            var checkout = _factory.Create(
                new SkuDictionary()
            {
                { 'A', new Sku("Item A", 10m) },
                { 'B', new Sku("Item B", 2m) }
            },
                new OfferDictionary()
            {
                { 'A', new QtyBasedOffer(2, 15m) }
            }
                );

            Assert.NotNull(checkout);
            Assert.IsInstanceOf <Checkout>(checkout);
            Assert.That("Item A", Is.EqualTo(checkout.GetSkuDetails('A').Description));
            Assert.That("Item B", Is.EqualTo(checkout.GetSkuDetails('B').Description));
        }
예제 #2
0
        public void CheckoutTotalPriceOnAddingNewItemsTest()
        {
            var checkout = _factory.Create(_availableSkus, _offers);

            checkout.AddItemToBasket('A');
            Assert.That(50, Is.EqualTo(checkout.TotalPrice()));
            checkout.AddItemToBasket('B');
            Assert.That(80, Is.EqualTo(checkout.TotalPrice()));
            checkout.AddItemToBasket('C');
            Assert.That(100, Is.EqualTo(checkout.TotalPrice()));
            checkout.AddItemToBasket('D');
            Assert.That(115, Is.EqualTo(checkout.TotalPrice()));

            // Add more items to invoke offers (3 A's for £130), ie. 130 (3 A's) + 30 (B) + 20 (C) + 15 (D) = 195
            checkout.AddItemToBasket('A');
            checkout.AddItemToBasket('A');
            Assert.That(195, Is.EqualTo(checkout.TotalPrice()));

            // Add more items to invoke offers (3 A's for £130), ie. 130 (3 A's) + 50 (A) + 30 (B) + 20 (C) + 15 (D) = 195
            checkout.AddItemToBasket('A');
            Assert.That(245, Is.EqualTo(checkout.TotalPrice()));
        }