/// <returns>A task that represents the asynchronous operation</returns>
        public virtual async Task <IActionResult> ProductReviews(int productId)
        {
            var product = await _productService.GetProductByIdAsync(productId);

            if (product == null || product.Deleted || !product.Published || !product.AllowCustomerReviews)
            {
                return(RedirectToRoute("Homepage"));
            }

            var model = new ProductReviewsModel();

            model = await _productModelFactory.PrepareProductReviewsModelAsync(model, product);

            await ValidateProductReviewAvailabilityAsync(product);

            //default value
            model.AddProductReview.Rating = _catalogSettings.DefaultProductRatingValue;

            //default value for all additional review types
            if (model.ReviewTypeList.Count > 0)
            {
                foreach (var additionalProductReview in model.AddAdditionalProductReviewList)
                {
                    additionalProductReview.Rating = additionalProductReview.IsRequired ? _catalogSettings.DefaultProductRatingValue : 0;
                }
            }

            return(View(model));
        }
Ejemplo n.º 2
0
        public async Task CanPrepareProductReviewsModel()
        {
            var product = await _productService.GetProductByIdAsync(3);

            var model = await _productModelFactory.PrepareProductReviewsModelAsync(new ProductReviewsModel(), product);

            model.ProductId.Should().Be(product.Id);
            model.ProductName.Should().Be(product.Name);
            model.ProductSeName.Should().Be(await GetService <IUrlRecordService>().GetSeNameAsync(product));

            model.Items.Any().Should().BeTrue();
        }