public void Pass_Throungh_Variable_Discount() { // Arrange Mock <IDiscountHelper> mock = new Mock <IDiscountHelper>(); mock.Setup(m => m.ApplyDiscount(It.IsAny <decimal>())) .Returns <decimal>(total => total); mock.Setup(m => m.ApplyDiscount(It.Is <decimal>(v => v == 0))) .Throws <System.ArgumentOutOfRangeException>(); mock.Setup(m => m.ApplyDiscount(It.Is <decimal>(v => v > 100))) .Returns <decimal>(total => total * 0.9M); mock.Setup(m => m.ApplyDiscount(It.IsInRange <decimal>(10, 100, Range.Inclusive))).Returns <decimal>(total => total - 5); var target = new LinqValueCalculator(mock.Object); // Act decimal doolars100 = target.ValueProduct(CreateNewProductsSetPrice(100)); decimal dollars0 = target.ValueProduct(CreateNewProductsSetPrice(0)); decimal dollars10 = target.ValueProduct(CreateNewProductsSetPrice(10)); decimal dollars500 = target.ValueProduct(CreateNewProductsSetPrice(500)); decimal dollars5 = target.ValueProduct(CreateNewProductsSetPrice(5)); // Assert Assert.AreEqual(95, doolars100, "fail100$"); Assert.AreEqual(0, dollars0, "exeption 0$"); Assert.AreEqual(5, dollars10, "fail 10$"); Assert.AreEqual(5, dollars5, "fail 5$"); Assert.AreEqual(500, dollars500, "fail 500$"); target.ValueProduct(CreateNewProductsSetPrice(0)); }
public void Sum_Products_Correctly() { // Arrange Mock <IDiscountHelper> mock = new Mock <IDiscountHelper>(); mock.Setup(m => m.ApplyDiscount(It.IsAny <decimal>())).Returns <decimal>(total => total); var target = new LinqValueCalculator(mock.Object); // Act var result = target.ValueProduct(products); // Assert Assert.AreEqual(products.Sum(e => e.Price), result); }