public void CreateLineItems_WithBetterRetailPrice_CreatesZeroLineItems(double retailPrice, int discountedItems, double groupSalePrice, int scannedItemCount) { var product = new Product("test product", Money.USDollar(retailPrice), SellByType.Unit); var special = new BuyNForXAmountSpecial(_now.StartOfWeek(), _now.EndOfWeek(), discountedItems, Money.USDollar((decimal)groupSalePrice)); CreateLineItems(product, special, scannedItemCount); _lineItems.Count().Should().Be(0); }
public void CreateLineItems_CreatesCorrectLineItemCount(int discountedItems, int scannedItemCount, int expectedLineItemCount, int?limit = null) { var product = new Product("test product", Money.USDollar(1m), SellByType.Unit); var special = new BuyNForXAmountSpecial(_now.StartOfWeek(), _now.EndOfWeek(), discountedItems, Money.USDollar(1.5m), limit); CreateLineItems(product, special, scannedItemCount); _lineItems.Count().Should().Be(expectedLineItemCount); }
public void CreateLineItems_CreatesCorrectLineItemTotalValue(int discountedItems, double groupSalePrice, int scannedItemCount, int expectedTotalValue) { var product = new Product("test product", Money.USDollar(1m), SellByType.Unit); var special = new BuyNForXAmountSpecial(_now.StartOfWeek(), _now.EndOfWeek(), discountedItems, Money.USDollar((decimal)groupSalePrice)); CreateLineItems(product, special, scannedItemCount); var totalValue = Money.USDollar(_lineItems.Sum(x => x.SalePrice.Amount)); totalValue.Should().BeEquivalentTo(Money.USDollar(expectedTotalValue)); }