public async Task TestIfUpdateHtmlDescriptionWorksProperly(string productId)
        {
            var     context = PCHUBDbContextInMemoryInitializer.InitializeContext();
            Account cloudinaryCredentials = new Account(
                CloudinaryAccountTests.CloudName,
                CloudinaryAccountTests.ApiKey,
                CloudinaryAccountTests.ApiSecret);

            var cloudinaryUtility = new Cloudinary(cloudinaryCredentials);
            var cloudinary        = new CloudinaryServices(cloudinaryUtility);

            var adminProductServices = new Areas.Administration.Services.AdminProductsServices(context, cloudinary);

            var form = new InserHtmlInProductViewModel();

            await context.Products.AddAsync(new Product
            {
                Id = productId,
            });

            await context.SaveChangesAsync();

            form.ProductId = productId;

            form.HtmlContent = "<p>Hello World</p>";

            await adminProductServices.UpdateHtmlDescriptionAsync(form);

            var result = await context.Products.FirstOrDefaultAsync(x => x.Id == productId);

            Assert.NotNull(result.HtmlDescription);

            Assert.Equal("<p>Hello World</p>", result.HtmlDescription);
        }
        public async Task <IActionResult> InsertHtmlDescrtionIntoProduct(InserHtmlInProductViewModel form)
        {
            if (!await this.productService.ProductExistsAsync(form.ProductId))
            {
                return(this.NotFound());
            }
            else
            {
                if (this.ModelState.IsValid)
                {
                    await this.service.UpdateHtmlDescriptionAsync(form);
                }
                else
                {
                    return(this.View(form));
                }
            }

            return(this.Redirect("/Products/" + form.Category + "/" + form.ProductId));
        }
        public async Task <IActionResult> InsertHtmlDescrtionIntoProduct(string productId)
        {
            if (!await this.productService.ProductExistsAsync(productId))
            {
                return(this.NotFound());
            }
            else
            {
                var product = await this.service.GetProductAsync(productId);

                var model = new InserHtmlInProductViewModel();

                model.Title       = product.Title;
                model.ProductId   = product.Id;
                model.PictureUrl  = product.MainPicture.Url;
                model.HtmlContent = product.HtmlDescription;
                model.Category    = product.Category.Name;
                return(this.View(model));
            }
        }
        public async Task TestIfUpdateHtmlDescriptionThrowsError()
        {
            var     context = PCHUBDbContextInMemoryInitializer.InitializeContext();
            Account cloudinaryCredentials = new Account(
                CloudinaryAccountTests.CloudName,
                CloudinaryAccountTests.ApiKey,
                CloudinaryAccountTests.ApiSecret);

            var cloudinaryUtility = new Cloudinary(cloudinaryCredentials);
            var cloudinary        = new CloudinaryServices(cloudinaryUtility);

            var adminProductServices = new Areas.Administration.Services.AdminProductsServices(context, cloudinary);

            var form = new InserHtmlInProductViewModel();

            await Assert.ThrowsAsync <NullReferenceException>(async() =>
            {
                await adminProductServices.UpdateHtmlDescriptionAsync(form);
            });
        }