public void DiscountPrice_ShouldReturnDiscountPrice_IfPropertiesMatch()
        {
            // Arrange
            var discount = new MultipleItemDiscount("A99", 3, 1.3m);

            var items = new[]
            {
                new Item("A99", 0.5m),
                new Item("A99", 0.5m),
                new Item("A99", 0.5m)
            };

            // Act
            decimal discountPrice = discount.DiscountedPrice(items);

            // Assert
            discountPrice.Should().Be(1.3m);
        }
        public void IsMatch_ShouldReturnTrue_IfItemsPassed_MatchDiscountProperties()
        {
            // Arrange
            var discount = new MultipleItemDiscount("A99", 3, 1.3m);

            var items = new[]
            {
                new Item("A99", 0.5m),
                new Item("A99", 0.5m),
                new Item("A99", 0.5m)
            };

            // Act
            bool isMatch = discount.IsMatch(items);

            // Assert
            isMatch.Should().BeTrue();
        }
Exemple #3
0
        public void ShouldApply_MultipleDiscounts_RegardlessOfScanOrder()
        {
            // Arrange
            var multipleAppleDiscount = new MultipleItemDiscount("A99", 3, 1.3m);
            var biscuitDiscount       = new MultipleItemDiscount("B15", 2, 0.45m);

            // Act
            var checkout = new Checkout(new[] { multipleAppleDiscount, biscuitDiscount });

            checkout.Scan(_apple);
            checkout.Scan(_apple);
            checkout.Scan(_biscuits);
            checkout.Scan(_apple);
            checkout.Scan(_biscuits);
            checkout.Scan(_cola);

            // Assert
            checkout.Total().Should().Be(1.3m + 0.45m + 0.6m);
        }