public void Test_CalculatePrice_ReturnsWithDiscount() { var priceRequest = new PriceRequest { UserType = (long)UserTypeEnum.PrivilegedUser, GoldPrice = 10, Weight = 5 }; var priceResponse = new PriceCalculatorResponse { GoldPrice = priceRequest.GoldPrice, Weight = priceRequest.Weight, TotalPrice = (priceRequest.GoldPrice * priceRequest.Weight) - (((priceRequest.GoldPrice * priceRequest.Weight) * 2) / 100), Discount = 2 }; serviceMock.Setup(p => p.CalculatePrice(priceRequest)).Returns(priceResponse); PriceCalculatorController controller = new PriceCalculatorController(serviceMock.Object); var result = controller.Post(priceRequest); Assert.NotNull(result); Assert.NotNull(result.Discount); Assert.True(result.TotalPrice == priceResponse.TotalPrice); }
public void Test_CalculatePrice_ReturnsWithoutDiscount() { var priceRequest = new PriceRequest { UserType = (long)UserTypeEnum.NormalUser, GoldPrice = 10, Weight = 5 }; var priceResponse = new PriceCalculatorResponse { GoldPrice = priceRequest.GoldPrice, Weight = priceRequest.Weight, TotalPrice = priceRequest.GoldPrice * priceRequest.Weight, Discount = null }; PriceCalculatorService service = new PriceCalculatorService(repositoryMock.Object, factoryMock.Object); var arg = new AbstractPriceCreateArg { UserType = (UserTypeEnum)priceRequest.UserType, PriceCalculatorService = service }; var product = new AbstractPriceCreateResponse { Product = new NormalPriceProduct(service) }; factoryMock.Setup(p => p.Create(arg)).Returns(product); var result = product.Product.CalculatePrice(priceRequest); Assert.NotNull(result); Assert.Null(result.Discount); Assert.True(result.TotalPrice == priceResponse.TotalPrice); }
public void Test_Empty_PriceRequest() { var priceRequest = new PriceRequest(); PriceCalculatorResponse priceResponse = null; serviceMock.Setup(p => p.CalculatePrice(priceRequest)).Returns(priceResponse); PriceCalculatorController controller = new PriceCalculatorController(serviceMock.Object); var result = controller.Post(priceRequest); Assert.Null(result); }
public PriceCalculatorResponse CalculatePrice(PriceRequest request) { PriceCalculatorResponse response = null; if (request != null) { AbstractPriceCreateArg arg = new AbstractPriceCreateArg { UserType = (UserTypeEnum)request.UserType, PriceCalculatorService = this }; var priceProduct = _priceFactory.Create(arg); response = priceProduct.Product.CalculatePrice(request); } return(response); }