public void Should_Delete_HtmlContentWidget_Successfully()
        {
            var htmlContentWidget = TestDataProvider.CreateNewHtmlContentWidget();

            RunActionInTransaction(session =>
            {
                session.SaveOrUpdate(htmlContentWidget);
                session.Flush();
                session.Clear();

                var uow            = new DefaultUnitOfWork(session);
                var repository     = new DefaultRepository(uow);
                var optionService  = new Mock <IOptionService>().Object;
                var contentService = new Mock <IContentService>().Object;

                var widgetService = new DefaultWidgetService(repository, uow, optionService, contentService);

                DeleteWidgetCommand command = new DeleteWidgetCommand(widgetService);

                bool success = command.Execute(new DeleteWidgetRequest
                {
                    WidgetId = htmlContentWidget.Id,
                    Version  = htmlContentWidget.Version
                });
                Assert.IsTrue(success);
            });
        }
        public void Should_Return_Widgets_List_Successfully()
        {
            RunActionInTransaction(
                session =>
            {
                ServerControlWidget control1 = TestDataProvider.CreateNewServerControlWidget();
                HtmlContentWidget control2   = TestDataProvider.CreateNewHtmlContentWidget();

                control1.Id   = Guid.NewGuid();
                control1.Name = Guid.NewGuid().ToString().Replace("-", string.Empty);

                session.SaveOrUpdate(control1);
                session.SaveOrUpdate(control2);
                session.Flush();

                var unitOfWork       = new DefaultUnitOfWork(session);
                var repository       = new DefaultRepository(unitOfWork);
                var categoryService  = new Mock <ICategoryService>();
                var cmsConfiguration = new Mock <ICmsConfiguration>().Object;
                var widgetService    = new DefaultWidgetService(repository, unitOfWork, null, null, null, categoryService.Object, cmsConfiguration);
                var command          = new GetSiteSettingsWidgetsCommand(widgetService);

                var response = command.Execute(new WidgetsFilter {
                    SearchQuery = control1.Name.Substring(1, control1.Name.Length - 1)
                });

                Assert.IsNotNull(response);
                Assert.IsNotNull(response.Items);
                Assert.GreaterOrEqual(response.Items.Count(), 1);

                var widget = response.Items.FirstOrDefault(w => control1.Id == w.Id);
                Assert.IsNotNull(widget);
                Assert.AreEqual(control1.Name, widget.WidgetName);
            });
        }
예제 #3
0
        public void Should_Return_Page_With_PageContents_Successfully()
        {
            string virtualPath = "/test/" + Guid.NewGuid().ToString().Replace("-", string.Empty) + "/";
            var    layout      = TestDataProvider.CreateNewLayout();
            var    regionA     = TestDataProvider.CreateNewRegion();
            var    regionB     = TestDataProvider.CreateNewRegion();

            var htmlContent         = TestDataProvider.CreateNewHtmlContent();
            var serverWidgetContent = TestDataProvider.CreateNewServerControlWidget();
            var htmlContentWidget   = TestDataProvider.CreateNewHtmlContentWidget();

            layout.LayoutRegions = new List <LayoutRegion>
            {
                TestDataProvider.CreateNewLayoutRegion(layout, regionA),
                TestDataProvider.CreateNewLayoutRegion(layout, regionB)
            };

            var page = TestDataProvider.CreateNewPageProperties(layout);

            page.PageContents = new List <PageContent>
            {
                TestDataProvider.CreateNewPageContent(htmlContent, page, regionA),
                TestDataProvider.CreateNewPageContent(serverWidgetContent, page, regionB),
                TestDataProvider.CreateNewPageContent(htmlContentWidget, page, regionB)
            };
            page.PageUrl = virtualPath;

            RunDatabaseActionAndAssertionsInTransaction(
                page,
                session =>
            {
                session.Save(page);
                session.Flush();
            },
                (result, session) =>
            {
                Page pageAlias     = null;
                Layout layoutAlias = null;

                var entity = session.QueryOver(() => pageAlias)
                             .Inner.JoinAlias(() => pageAlias.Layout, () => layoutAlias)
                             .Where(f => f.PageUrl == virtualPath.ToLowerInvariant())
                             .Fetch(f => f.Layout).Eager
                             .Fetch(f => f.Layout.LayoutRegions).Eager
                             .Fetch(f => f.PageContents).Eager
                             .Fetch(f => f.PageContents[0].Content).Eager
                             .SingleOrDefault();

                Assert.IsNotNull(entity);
                Assert.AreEqual(page.PageContents.Count(), entity.PageContents.Distinct().Count());
                Assert.AreEqual(page.Layout.LayoutRegions.Count(), entity.Layout.LayoutRegions.Distinct().Count());
            });
        }
예제 #4
0
        private Content[] CreateFakeContents()
        {
            var content1 = TestDataProvider.CreateNewContent();
            var content2 = TestDataProvider.CreateNewHtmlContent();
            var content3 = TestDataProvider.CreateNewHtmlContentWidget();
            var content4 = TestDataProvider.CreateNewServerControlWidget();

            content1.Name = "Content_1";
            content2.Name = "Content_2";
            content3.Name = "Test_1";
            content4.Name = "Test_2";

            return(new[] { content1, content2, content3, content4 });
        }
예제 #5
0
        public void Should_Insert_HtmlWidget_To_Page_Successfully()
        {
            // Create html content
            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            widget.Status = ContentStatus.Published;

            var page        = TestDataProvider.CreateNewPage();
            var region      = TestDataProvider.CreateNewRegion();
            var pageContent = TestDataProvider.CreateNewPageContent(widget, page, region);

            pageContent.Order = TestDataProvider.ProvideRandomNumber(1, 99999);

            // Mock
            var repository = new Mock <IRepository>();

            repository
            .Setup(r => r.AsProxy <Page>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewPage());
            repository
            .Setup(r => r.AsProxy <Region>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewRegion());
            repository
            .Setup(r => r.AsQueryable <PageContent>())
            .Returns(new List <PageContent> {
                pageContent
            }.AsQueryable());
            repository
            .Setup(r => r.Save(It.IsAny <PageContent>()))
            .Callback <PageContent>(pc =>
            {
                Assert.AreEqual(pc.Order, pageContent.Order + 1);
            });

            // Create command
            var command = new InsertContentToPageCommand();

            command.UnitOfWork = new Mock <IUnitOfWork>().Object;
            command.Repository = repository.Object;

            // Execute
            var request = new InsertContentToPageRequest {
                ContentId = widget.Id, PageId = page.Id, RegionId = region.Id
            };
            var result = command.Execute(request);

            Assert.IsNotNull(result);
            Assert.IsTrue(result);
        }
예제 #6
0
        public void Should_Retrieve_Widgets_From_Database_Paged_And_Sorted_By_WidgetName()
        {
            RunActionInTransaction(session =>
            {
                var widgets = new Widget[]
                {
                    TestDataProvider.CreateNewServerControlWidget(),
                    TestDataProvider.CreateNewServerControlWidget(),
                    TestDataProvider.CreateNewHtmlContentWidget()
                };
                int i = 0;
                foreach (var widget in widgets)
                {
                    widget.Name = "test name " + i++;
                    session.SaveOrUpdate(widget);
                }
                session.Flush();
                session.Clear();

                var unitOfWork       = new DefaultUnitOfWork(session);
                var repository       = new DefaultRepository(unitOfWork);
                var categoryService  = new Mock <ICategoryService>();
                var cmsConfiguration = new Mock <ICmsConfiguration>().Object;
                var widgetService    = new DefaultWidgetService(repository, unitOfWork, null, null, null, categoryService.Object, cmsConfiguration);
                var command          = new GetSiteSettingsWidgetsCommand(widgetService);

                var result = command.Execute(new WidgetsFilter
                {
                    PageSize    = 20,
                    Column      = "WidgetName",
                    Direction   = SortDirection.Ascending,
                    PageNumber  = 1,
                    SearchQuery = "test name 2"
                });

                Assert.IsNotNull(result);
                Assert.AreEqual(1, result.Items.TotalItems);
                Assert.AreEqual(widgets[2].Name, result.Items.First().WidgetName);
            });
        }
예제 #7
0
        public void Should_Delete_HtmlContentWidget_Successfully()
        {
            var htmlContentWidget = TestDataProvider.CreateNewHtmlContentWidget();

            RunActionInTransaction(session =>
            {
                session.SaveOrUpdate(htmlContentWidget);
                session.Flush();
                session.Clear();

                DeleteWidgetCommand command = new DeleteWidgetCommand();
                command.UnitOfWork          = new DefaultUnitOfWork(session);
                command.Repository          = new DefaultRepository(command.UnitOfWork);

                bool success = command.Execute(new DeleteWidgetRequest
                {
                    WidgetId = htmlContentWidget.Id,
                    Version  = htmlContentWidget.Version
                });
                Assert.IsTrue(success);
            });
        }
        private Widget[] CreateFakeWidgets()
        {
            var serverControlWidget = TestDataProvider.CreateNewServerControlWidget();

            serverControlWidget.PageContents = new List <PageContent>()
            {
                new PageContent()
                {
                    Page = new Page()
                    {
                        Id = pageId
                    }
                }
            };

            var htmlContentWidget = TestDataProvider.CreateNewHtmlContentWidget();

            return(new Widget[]
            {
                serverControlWidget,
                htmlContentWidget
            });
        }
예제 #9
0
        protected override SaveBlogPostPropertiesModel GetCreateModel(ISession session)
        {
            var blogPost = TestDataProvider.CreateNewBlogPost();

            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            session.SaveOrUpdate(widget);

            var assignmentId1 = Guid.NewGuid();
            var assignmentId2 = Guid.NewGuid();
            var html          = string.Format("{0}{1}{3}{2}",
                                              TestDataProvider.ProvideRandomString(50),
                                              TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId1),
                                              TestDataProvider.ProvideRandomString(50),
                                              TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId2));

            session.SaveOrUpdate(blogPost.Category);
            session.SaveOrUpdate(blogPost.Author);
            session.SaveOrUpdate(blogPost.Image);
            session.SaveOrUpdate(blogPost.FeaturedImage);
            session.SaveOrUpdate(blogPost.SecondaryImage);
            session.SaveOrUpdate(blogPost.Language);

            session.Flush();
            session.Clear();

            var model = new SaveBlogPostPropertiesModel
            {
                BlogPostUrl      = string.Format("/{0}/", TestDataProvider.ProvideRandomString(200)),
                Title            = blogPost.Title,
                IntroText        = blogPost.Description,
                IsPublished      = true,
                PublishedOn      = blogPost.PublishedOn,
                LayoutId         = layout != null ? layout.Id : (defaultLayout != null ? defaultLayout.Id : (Guid?)null),
                MasterPageId     = masterPage != null ? masterPage.Id : (Guid?)null,
                CategoryId       = blogPost.Category.Id,
                AuthorId         = blogPost.Author.Id,
                MainImageId      = blogPost.Image.Id,
                FeaturedImageId  = blogPost.FeaturedImage.Id,
                SecondaryImageId = blogPost.SecondaryImage.Id,
                ActivationDate   = blogPost.ActivationDate,
                ExpirationDate   = blogPost.ExpirationDate,
                IsArchived       = true,
                UseCanonicalUrl  = true,
                UseNoFollow      = true,
                UseNoIndex       = true,
                HtmlContent      = html,
                Tags             = new List <string> {
                    TestDataProvider.ProvideRandomString(20), TestDataProvider.ProvideRandomString(20)
                },
                Language = new LanguageModel
                {
                    LanguageGroupIdentifier = Guid.NewGuid(),
                    Id   = blogPost.Language.Id,
                    Code = blogPost.Language.Code,
                    Name = blogPost.Language.Name
                },
                MetaData = new MetadataModel
                {
                    MetaDescription = blogPost.MetaDescription,
                    MetaKeywords    = blogPost.MetaKeywords,
                    MetaTitle       = blogPost.MetaTitle
                },
                AccessRules = new List <AccessRuleModel>
                {
                    new AccessRuleModel {
                        AccessLevel = AccessLevel.ReadWrite,
                        Identity    = TestDataProvider.ProvideRandomString(20),
                        IsForRole   = false
                    },
                    new AccessRuleModel {
                        AccessLevel = AccessLevel.Deny,
                        Identity    = TestDataProvider.ProvideRandomString(20),
                        IsForRole   = true
                    }
                },
                TechnicalInfo = new TechnicalInfoModel
                {
                    BlogPostContentId = Guid.NewGuid(),
                    PageContentId     = Guid.NewGuid(),
                    RegionId          = region.Id
                },
                ChildContentsOptionValues = new List <ChildContentOptionValuesModel>
                {
                    new ChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId1,
                        OptionValues         = new List <OptionValueModel>
                        {
                            new OptionValueModel
                            {
                                Key             = "O1",
                                Value           = "V1",
                                UseDefaultValue = false,
                                Type            = OptionType.Text
                            }
                        }
                    },
                    new ChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId2,
                        OptionValues         = new List <OptionValueModel>
                        {
                            new OptionValueModel
                            {
                                Key                  = "O2",
                                Value                = Guid.NewGuid().ToString(),
                                UseDefaultValue      = false,
                                Type                 = OptionType.Custom,
                                CustomTypeIdentifier = "media-images-folder"
                            },
                            new OptionValueModel
                            {
                                Key             = "O3",
                                Value           = Guid.NewGuid().ToString(),
                                UseDefaultValue = true,
                                Type            = OptionType.Text
                            }
                        }
                    }
                }
            };

            return(model);
        }
예제 #10
0
        protected override SaveHtmlContentWidgetModel GetCreateModel(ISession session)
        {
            var categoryTree = TestDataProvider.CreateNewCategoryTree();

            category = TestDataProvider.CreateNewCategory(categoryTree);
            categoryTree.AvailableFor = new List <CategoryTreeCategorizableItem>
            {
                new CategoryTreeCategorizableItem
                {
                    // See Migration201502101136.cs
                    CategorizableItem = session.Load <CategorizableItem>(new Guid("B2F05159-74AF-4B67-AEB9-36B9CC9EED57")),
                    CategoryTree      = categoryTree
                }
            };
            session.SaveOrUpdate(categoryTree);
            session.SaveOrUpdate(category);
            session.Flush();

            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            session.SaveOrUpdate(widget);

            var content = TestDataProvider.CreateNewHtmlContentWidget();

            var language1 = TestDataProvider.CreateNewLanguage();

            session.SaveOrUpdate(language1);

            var language2 = TestDataProvider.CreateNewLanguage();

            session.SaveOrUpdate(language2);

            var assignmentId1 = Guid.NewGuid();
            var assignmentId2 = Guid.NewGuid();

            content.Html = string.Format("{0}{1}{3}{2}",
                                         TestDataProvider.ProvideRandomString(50),
                                         TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId1),
                                         TestDataProvider.ProvideRandomString(50),
                                         TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId2));

            session.SaveOrUpdate(content);
            session.Flush();
            return(new SaveHtmlContentWidgetModel
            {
                Name = TestDataProvider.ProvideRandomString(MaxLength.Name),
                IsPublished = true,
                PublishedOn = content.PublishedOn,
                PublishedByUser = content.PublishedByUser,
                Categories = new List <Guid>()
                {
                    category.Id
                },
                CustomCss = content.CustomCss,
                UseCustomCss = true,
                Html = content.Html,
                UseHtml = true,
                CustomJavaScript = content.CustomJs,
                UseCustomJavaScript = true,
                Options = new List <OptionModel>
                {
                    new OptionModel
                    {
                        DefaultValue = "1",
                        Key = "K1",
                        Type = OptionType.Text,
                        Translations = new List <OptionTranslationModel>
                        {
                            new OptionTranslationModel
                            {
                                LanguageId = language1.Id.ToString(),
                                Value = "translated_lang1"
                            },
                            new OptionTranslationModel
                            {
                                LanguageId = language2.Id.ToString(),
                                Value = "translated_lang2"
                            }
                        }
                    },

                    new OptionModel
                    {
                        DefaultValue = Guid.NewGuid().ToString(),
                        Key = "K2",
                        Type = OptionType.Custom,
                        CustomTypeIdentifier = MediaManagerFolderOptionProvider.Identifier
                    }
                },
                ChildContentsOptionValues = new List <MultilingualChildContentOptionValuesModel>
                {
                    new MultilingualChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId1,
                        MultilingualOptionValues = new List <MultilingualOptionValueModel>
                        {
                            new MultilingualOptionValueModel
                            {
                                Key = "O1",
                                Value = "V1",
                                UseDefaultValue = false,
                                Type = OptionType.Text,
                                Translations = new List <OptionTranslationModel>
                                {
                                    new OptionTranslationModel
                                    {
                                        LanguageId = language1.Id.ToString(),
                                        Value = "V1_translated_lang1"
                                    },
                                    new OptionTranslationModel
                                    {
                                        LanguageId = language2.Id.ToString(),
                                        Value = "V1_translated_lang2"
                                    }
                                }
                            }
                        }
                    },
                    new MultilingualChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId2,
                        MultilingualOptionValues = new List <MultilingualOptionValueModel>
                        {
                            new MultilingualOptionValueModel
                            {
                                Key = "O2",
                                Value = Guid.NewGuid().ToString(),
                                UseDefaultValue = false,
                                Type = OptionType.Custom,
                                CustomTypeIdentifier = "media-images-folder"
                            },
                            new MultilingualOptionValueModel
                            {
                                Key = "O3",
                                Value = Guid.NewGuid().ToString(),
                                UseDefaultValue = true,
                                Type = OptionType.Text
                            }
                        }
                    }
                }
            });
        }
예제 #11
0
        protected override SaveHtmlContentModel GetCreateModel(ISession session)
        {
            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            session.SaveOrUpdate(widget);

            var content = TestDataProvider.CreateNewHtmlContent();

            var assignmentId1 = Guid.NewGuid();
            var assignmentId2 = Guid.NewGuid();

            content.Html = string.Format("{0}{1}{3}{2}",
                                         TestDataProvider.ProvideRandomString(50),
                                         TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId1),
                                         TestDataProvider.ProvideRandomString(50),
                                         TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId2));

            var    html         = content.Html;
            string originalText = "Just a test";

            if (contentTextMode == ContentTextMode.Markdown)
            {
                html         = null;
                originalText = MarkdownOriginalText;
            }

            if (contentTextMode == ContentTextMode.SimpleText)
            {
                html         = null;
                originalText = SimpleOriginalText;
            }

            return(new SaveHtmlContentModel
            {
                Name = content.Name,
                ActivationDate = content.ActivationDate,
                ExpirationDate = content.ExpirationDate,
                Html = html,
                OriginalText = originalText,
                ContentTextMode = contentTextMode,
                CustomCss = content.CustomCss,
                UseCustomCss = true,
                CustomJavaScript = content.CustomJs,
                UseCustomJavaScript = true,
                IsPublished = true,
                PublishedOn = content.PublishedOn,
                PublishedByUser = content.PublishedByUser,
                ChildContentsOptionValues = new List <ChildContentOptionValuesModel>
                {
                    new ChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId1,
                        OptionValues = new List <OptionValueModel>
                        {
                            new OptionValueModel
                            {
                                Key = "O1",
                                Value = "V1",
                                UseDefaultValue = false,
                                Type = OptionType.Text
                            }
                        }
                    },
                    new ChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId2,
                        OptionValues = new List <OptionValueModel>
                        {
                            new OptionValueModel
                            {
                                Key = "O2",
                                Value = Guid.NewGuid().ToString(),
                                UseDefaultValue = false,
                                Type = OptionType.Custom,
                                CustomTypeIdentifier = "media-images-folder"
                            },
                            new OptionValueModel
                            {
                                Key = "O3",
                                Value = Guid.NewGuid().ToString(),
                                UseDefaultValue = true,
                                Type = OptionType.Text
                            }
                        }
                    }
                }
            });
        }
예제 #12
0
        public void Should_Insert_HtmlWidget_To_Page_Successfully()
        {
            // Create html content
            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            widget.Status = ContentStatus.Published;

            var page        = TestDataProvider.CreateNewPage();
            var region      = TestDataProvider.CreateNewRegion();
            var pageContent = TestDataProvider.CreateNewPageContent(widget, page, region);

            pageContent.Order   = TestDataProvider.ProvideRandomNumber(1, 99999);
            pageContent.Id      = Guid.NewGuid();
            pageContent.Version = 10;
            widget.Version      = 20;

            // Mock content Service
            var contentService = new Mock <IContentService>();

            contentService
            .Setup(r => r.GetPageContentNextOrderNumber(It.IsAny <Guid>(), It.IsAny <Guid?>()))
            .Returns(pageContent.Order + 1);

            // Mock
            var repository = new Mock <IRepository>();

            repository
            .Setup(r => r.AsProxy <Page>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewPage());
            repository
            .Setup(r => r.AsProxy <Region>(It.IsAny <Guid>()))
            .Returns(TestDataProvider.CreateNewRegion());
            repository
            .Setup(r => r.AsQueryable <PageContent>())
            .Returns(new List <PageContent> {
                pageContent
            }.AsQueryable());
            repository
            .Setup(r => r.AsQueryable <Content>())
            .Returns(new List <Content> {
                widget
            }.AsQueryable());
            repository
            .Setup(r => r.Save(It.IsAny <PageContent>()))
            .Callback <PageContent>(pc =>
            {
                Assert.AreEqual(pc.Order, pageContent.Order + 1);
                pc.Id      = pageContent.Id;
                pc.Version = pageContent.Version;
            });

            // Create command
            var command = new InsertContentToPageCommand(contentService.Object,
                                                         new FakePageContentProjectionFactory(null, null),
                                                         new Mock <IWidgetService>().Object);

            command.UnitOfWork = new Mock <IUnitOfWork>().Object;
            command.Repository = repository.Object;

            // Execute
            var request = new InsertContentToPageRequest {
                ContentId = widget.Id, PageId = page.Id, RegionId = region.Id
            };
            var result = command.Execute(request);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.PageContentId, pageContent.Id);
            Assert.AreEqual(result.PageId, page.Id);
            Assert.AreEqual(result.ContentId, widget.Id);
            Assert.AreEqual(result.ContentType, "html-widget");
            Assert.AreEqual(result.ContentVersion, widget.Version);
            Assert.AreEqual(result.PageContentVersion, pageContent.Version);
            Assert.AreEqual(result.Title, widget.Name);
            Assert.AreEqual(result.RegionId, region.Id);
            Assert.AreEqual(result.DesirableStatus, widget.Status);
        }
        public void Should_Insert_And_Retrieve_HtmlContentWidget_Successfully()
        {
            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            RunEntityMapTestsInTransaction(widget);
        }
        protected override SaveHtmlContentWidgetModel GetCreateModel(ISession session)
        {
            var widget = TestDataProvider.CreateNewHtmlContentWidget();

            session.SaveOrUpdate(widget);

            var content = TestDataProvider.CreateNewHtmlContentWidget();

            var assignmentId1 = Guid.NewGuid();
            var assignmentId2 = Guid.NewGuid();

            content.Html = string.Format("{0}{1}{3}{2}",
                                         TestDataProvider.ProvideRandomString(50),
                                         TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId1),
                                         TestDataProvider.ProvideRandomString(50),
                                         TestDataProvider.CreateChildWidgetAssignment(widget.Id, assignmentId2));

            session.SaveOrUpdate(content.Category);

            return(new SaveHtmlContentWidgetModel
            {
                Name = TestDataProvider.ProvideRandomString(MaxLength.Name),
                IsPublished = true,
                PublishedOn = content.PublishedOn,
                PublishedByUser = content.PublishedByUser,
                CategoryId = content.Category.Id,
                CustomCss = content.CustomCss,
                UseCustomCss = true,
                Html = content.Html,
                UseHtml = true,
                CustomJavaScript = content.CustomJs,
                UseCustomJavaScript = true,
                Options = new List <OptionModel>
                {
                    new OptionModel
                    {
                        DefaultValue = "1",
                        Key = "K1",
                        Type = OptionType.Text
                    },

                    new OptionModel
                    {
                        DefaultValue = Guid.NewGuid().ToString(),
                        Key = "K2",
                        Type = OptionType.Custom,
                        CustomTypeIdentifier = MediaManagerFolderOptionProvider.Identifier
                    }
                },
                ChildContentsOptionValues = new List <ChildContentOptionValuesModel>
                {
                    new ChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId1,
                        OptionValues = new List <OptionValueModel>
                        {
                            new OptionValueModel
                            {
                                Key = "O1",
                                Value = "V1",
                                UseDefaultValue = false,
                                Type = OptionType.Text
                            }
                        }
                    },
                    new ChildContentOptionValuesModel
                    {
                        AssignmentIdentifier = assignmentId2,
                        OptionValues = new List <OptionValueModel>
                        {
                            new OptionValueModel
                            {
                                Key = "O2",
                                Value = Guid.NewGuid().ToString(),
                                UseDefaultValue = false,
                                Type = OptionType.Custom,
                                CustomTypeIdentifier = "media-images-folder"
                            },
                            new OptionValueModel
                            {
                                Key = "O3",
                                Value = Guid.NewGuid().ToString(),
                                UseDefaultValue = true,
                                Type = OptionType.Text
                            }
                        }
                    }
                }
            });
        }