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_PriceFactory_ReturnsPrivilegedPriceProduct() { var priceRequest = new PriceRequest { UserType = (long)UserTypeEnum.NormalUser }; PriceCalculatorFactory factory = new PriceCalculatorFactory(); var arg = new AbstractPriceCreateArg { UserType = (UserTypeEnum)priceRequest.UserType }; var product = new AbstractPriceCreateResponse { Product = new NormalPriceProduct(null) }; factoryMock.Setup(p => p.Create(arg)).Returns(product); var result = factory.Create(arg); Assert.NotNull(result.Product); Assert.True(result.Product.GetType() == typeof(NormalPriceProduct)); }