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(); }
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); }