public void WHEN_Culture_Is_Null_SHOULD_Throw_Arguments_Exception() { //Arrange _container.Use(CreateProductRepositoryWithProductPriceNoVariant()); var productService = _container.CreateInstance <ProductPriceViewService>(); var param = new GetProductsPriceParam { Scope = GetRandom.String(32), ProductIds = new List <string> { GetRandom.String(32), GetRandom.String(32) } }; // Act var exception = Assert.ThrowsAsync <ArgumentException>(() => productService.CalculatePricesAsync(param)); //Assert exception.ParamName.Should().BeSameAs("getProductPriceParam"); }
/// <summary> /// Validates the products price input parameter. Throws exceptions for each param invalud value. /// </summary> /// <param name="getProductPriceParam">The get product price parameter.</param> protected virtual void ValidateProductsPriceInputParam(GetProductsPriceParam getProductPriceParam) { if (getProductPriceParam == null) { throw new ArgumentNullException(nameof(getProductPriceParam)); } if (getProductPriceParam.ProductIds == null) { throw new ArgumentException(ArgumentNullMessageFormatter.FormatErrorMessage("ProductIds"), nameof(getProductPriceParam)); } if (string.IsNullOrEmpty(getProductPriceParam.Scope)) { throw new ArgumentException(ArgumentNullMessageFormatter.FormatErrorMessage("Scope"), nameof(getProductPriceParam)); } if (getProductPriceParam.CultureInfo == null) { throw new ArgumentException(ArgumentNullMessageFormatter.FormatErrorMessage("CultureInfo"), nameof(getProductPriceParam)); } }
/// <summary> /// Gets the products prices view model asynchronous. /// </summary> /// <param name="param">The get product price parameter.</param> /// <returns></returns> public virtual async Task <ProductsPricesViewModel> CalculatePricesAsync(GetProductsPriceParam param) { if (param == null) { throw new ArgumentNullException(nameof(param)); } if (param.ProductIds == null) { throw new ArgumentException(GetMessageOfNull(nameof(param.ProductIds)), nameof(param)); } if (string.IsNullOrEmpty(param.Scope)) { throw new ArgumentException(GetMessageOfNullEmpty(nameof(param.Scope)), nameof(param)); } if (param.CultureInfo == null) { throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param)); } var productsPriceTask = ProductRepository.CalculatePricesAsync(param.ProductIds, param.Scope); var currencyTask = ScopeViewService.GetScopeCurrencyAsync(new GetScopeCurrencyParam { Scope = param.Scope, CultureInfo = param.CultureInfo }); await Task.WhenAll(productsPriceTask, currencyTask).ConfigureAwait(false); //var productsPrice = await ProductRepository.CalculatePricesAsync(getProductPriceParam.ProductIds, getProductPriceParam.Scope).ConfigureAwait(false); var vm = CreateProductsPricesViewModel(new CreateProductPriceViewModelParam { CultureInfo = param.CultureInfo, ProductPrices = await productsPriceTask, CurrencyViewModel = await currencyTask }); return(vm); }
public void WHEN_Culture_Is_Null_SHOULD_Throw_Arguments_Exception() { //Arrange _container.Use(CreateProductRepositoryWithProductPriceNoVariant()); var productService = _container.CreateInstance <ProductPriceViewService>(); var param = new GetProductsPriceParam { Scope = GetRandom.String(32), ProductIds = new List <string> { GetRandom.String(32), GetRandom.String(32) } }; // Act Expression <Func <Task <ProductsPricesViewModel> > > expression = () => productService.CalculatePricesAsync(param); var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke()); //Assert exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression).First().Name); exception.Message.Should().StartWith(GetMessageOfNull(nameof(param.CultureInfo))); }
/// <summary> /// Gets the products prices view model asynchronous. /// </summary> /// <param name="getProductPriceParam">The get product price parameter.</param> /// <returns></returns> public virtual async Task <ProductsPricesViewModel> CalculatePricesAsync(GetProductsPriceParam getProductPriceParam) { ValidateProductsPriceInputParam(getProductPriceParam); var productsPriceTask = ProductRepository.CalculatePricesAsync(getProductPriceParam.ProductIds, getProductPriceParam.Scope); var currencyTask = ScopeViewService.GetScopeCurrencyAsync(new GetScopeCurrencyParam { Scope = getProductPriceParam.Scope, CultureInfo = getProductPriceParam.CultureInfo }); await Task.WhenAll(productsPriceTask, currencyTask).ConfigureAwait(false); //var productsPrice = await ProductRepository.CalculatePricesAsync(getProductPriceParam.ProductIds, getProductPriceParam.Scope).ConfigureAwait(false); var vm = CreateProductsPricesViewModel(new CreateProductPriceViewModelParam { CultureInfo = getProductPriceParam.CultureInfo, ProductPrices = await productsPriceTask, CurrencyViewModel = await currencyTask }); return(vm); }