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");
        }
コード例 #2
0
        /// <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));
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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)));
        }
コード例 #5
0
        /// <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);
        }