public void CalculateDiscount_CouponOfTypePercentageAndHigherThan100_ThrowInvalidCouponException() { var target = new CouponEngine(); Assert.Throws <InvalidCouponException>( () => target.CalculateDiscount(CreateCheckOutDto(total: 200), CreateCoupon(value: 101, couponType: CouponType.Percentage))); }
public void CalculateDiscount_CouponHasNegativeValue_ThrowInvalidCouponException() { var target = new CouponEngine(); Assert.Throws <InvalidCouponException>( () => target.CalculateDiscount(CreateCheckOutDto(total: 10), CreateCoupon(value: -10))); }
public void CalculateDiscount_CouponHasValueGreaterThanShoppingCartTotal_ThrowInvalidCouponException() { var target = new CouponEngine(); Assert.Throws <InvalidCouponException>( () => target.CalculateDiscount(CreateCheckOutDto(total: 10), CreateCoupon(value: 20))); }
public void CalculateDiscount_CouponHasExpired_ThrowCouponExpiredException(CouponType couponType) { var target = new CouponEngine(); Assert.Throws <CouponExpiredException>(() => target.CalculateDiscount(CreateCheckOutDto(), CreateCoupon(couponType: couponType, expiration: DateTime.Now.AddDays(-1)))); }
public void CalculateDiscount_CouponOfTypeFreeShipping_ReturnShippingCost() { var target = new CouponEngine(); var actual = target.CalculateDiscount(CreateCheckOutDto(shippingCost: 10), CreateCoupon(couponType: CouponType.FreeShipping)); Assert.Equal(10, actual); }
public void CalculateDiscount_CouponOfTypePercentageAndHigherThanAmount_DoNotThrowInvalidCouponException() { var target = new CouponEngine(); var actual = target.CalculateDiscount(CreateCheckOutDto(total: 10), CreateCoupon(value: 50, couponType: CouponType.Percentage)); Assert.Equal(5, actual); }
public void CalculateDiscount_CouponOfTypePercentage_ReturnPercentageOfTotal() { var target = new CouponEngine(); var actual = target.CalculateDiscount(CreateCheckOutDto(total: 200), CreateCoupon(value: 10, couponType: CouponType.Percentage)); Assert.Equal(20, actual); }
public void CalculateDiscount_CouponHasAmountValue_ReturnNumber(double amount) { var target = new CouponEngine(); var actual = target.CalculateDiscount(CreateCheckOutDto(total: 10), CreateCoupon(value: amount)); Assert.Equal(amount, actual); }
public void CalculateDiscount_CouponIsNull_Return0() { var target = new CouponEngine(); var actual = target.CalculateDiscount(CreateCheckOutDto(), null); Assert.Equal(0, actual); }
public void CalculateDiscount_CouponIsNull_Return0() { // We could have used auto mocking container here as well, however at the moment this initialization is simple as it is var target = new CouponEngine(); var actual = target.CalculateDiscount(CreateCheckOutDto(), null); Assert.Equal(0, actual); }
public void When_Coupon_Is_Null_Return_Zero() { var sut = new CouponEngine(); var shoppingCartDto = new ShoppingCartDto() { Id = "1", Items = Utility.GenerateListOfDtoItems() }; var checkout = new CheckoutDto(shoppingCartDto, 10, 1, 100); var result = sut.CalculateDiscount(checkout, null); result.Should().Be(0); }
public void Coupon_Calculated_As_A_Percentage() { var sut = new CouponEngine(); var shoppingCartDto = new ShoppingCartDto() { Id = "1", Items = Utility.GenerateListOfDtoItems() }; var checkout = new CheckoutDto(shoppingCartDto, 10, 1, 10); var result = sut.CalculateDiscount(checkout, new Coupon() { Amount = 2, Type = CouponType.Percentage, ExpiryDate = DateTime.Now.AddDays(10) }); result.Should().Be(20); }
public void Coupon_Cannot_Be_Greater_Than_Cart_Total() { var sut = new CouponEngine(); var shoppingCartDto = new ShoppingCartDto() { Id = "1", Items = Utility.GenerateListOfDtoItems() }; var checkout = new CheckoutDto(shoppingCartDto, 10, 1, 10); Action result = () => sut.CalculateDiscount(checkout, new Coupon() { Amount = 100, ExpiryDate = DateTime.Now.AddDays(-60) }); result.Should().Throw <CouponExpiredException>() .WithMessage("Coupon past 30 days and has expired."); }
public void Coupon_No_More_Than_OneHundred() { var sut = new CouponEngine(); var shoppingCartDto = new ShoppingCartDto() { Id = "1", Items = Utility.GenerateListOfDtoItems() }; var checkout = new CheckoutDto(shoppingCartDto, 20, 10, 200); Action result = () => sut.CalculateDiscount(checkout, new Coupon() { Amount = 100, Type = CouponType.Percentage, ExpiryDate = DateTime.Now.AddDays(10) }); result.Should().Throw <InvalidCouponException>() .WithMessage("Coupon amount cannot be equal to 100."); }
public void Coupon_Cannot_Be_A_Negative_Number() { var sut = new CouponEngine(); var shoppingCartDto = new ShoppingCartDto() { Id = "1", Items = Utility.GenerateListOfDtoItems() }; var checkout = new CheckoutDto(shoppingCartDto, 10, 1, 10); Action result = () => sut.CalculateDiscount(checkout, new Coupon() { Amount = -2, ExpiryDate = DateTime.Now.AddDays(10) }); result.Should().Throw <InvalidCouponException>() .WithMessage("Coupon amount cannot be negative."); }