Ejemplo n.º 1
0
        public void Given_Cart_When_NoDiscountedProductFound_Then_NoDiscountApplies()
        {
            // Arrange
            var items = new List <CartItem>
            {
                new CartItem(new Product("Milk", 1.0m), 1),
                new CartItem(new Product("Tomato", 0.50m), 1)
            };

            var sut = new PercentageDiscount("Apples", 10, new DateTime(2018, 11, 19));

            // Act
            var result = sut.Apply(items);

            // Assert
            Assert.Empty(result);
        }
Ejemplo n.º 2
0
        public void Given_Cart_When_DiscountExpires_Then_RemoveDiscount()
        {
            var expires = Substitute.For <IDateTime>(new DateTime(2018, 11, 19));
            var items   = new List <CartItem>
            {
                new CartItem(new Product("Milk", 1.0m), 1),
                new CartItem(new Product("Tomato", 0.50m), 1),
                new CartItem(new Product("Apples", 1.0m), 1)
            };

            var sut = new PercentageDiscount("Apples", 10, new DateTime(2018, 11, 19));

            // Act
            var result = sut.Apply(items);

            // Assert
            Assert.Equal(expires, result);
        }
Ejemplo n.º 3
0
        public void Given_Cart_When_DiscountedProductFound_Then_ApplyDiscount(int quantity, decimal expectedDiscount, string expectedDescription)
        {
            // Arrange
            var items = new List <CartItem>
            {
                new CartItem(new Product("Milk", 1.0m), 1),
                new CartItem(new Product("Tomato", 0.50m), 1),
                new CartItem(new Product("Apples", 1.0m), quantity)
            };

            var sut = new PercentageDiscount("Apples", 10, new DateTime(2018, 11, 19));

            // Act
            var result = sut.Apply(items);

            // Assert
            Assert.Collection(result, d =>
            {
                Assert.Equal(expectedDescription, d.Description);
                Assert.Equal(expectedDiscount, d.Amount);
            });
        }