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); }); }
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()); }); }
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 }); }
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); }
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); }); }
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 }); }
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); }
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 } } } } }); }
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 } } } } }); }
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 } } } } }); }