public CmsPageModel Build(CmsContent article, MenuPageModel.MenuPageContent menu, BannerPageModel banners) { if (article.ContentItemsAreNullOrEmpty()) { return(null); } var item = article.Items.FirstOrDefault(); var pageTypeResult = item.Sys.ContentType.Sys.Id.GetPageType(); var contentItems = new List <ContentItem>(); if (item.Fields.Content?.Content == null) { return(GenerateCmsPageModel(article, item, pageTypeResult, contentItems, null, menu, banners)); } foreach (var contentItem in item.Fields.Content.Content) { article.ProcessContentNodeTypes(contentItem, contentItems); contentItem.ProcessListNodeTypes(contentItems); article.ProcessEmbeddedAssetBlockNodeTypes(contentItem, contentItems); } var parentPage = article.Includes.Entry.FirstOrDefault(c => c.Sys.Id.Equals(item.Fields.LandingPage?.Sys?.Id)); return(GenerateCmsPageModel(article, item, pageTypeResult, contentItems, parentPage, menu, banners)); }
public void Then_The_Banner_Is_Built(CmsContent source, string contentValue) { source.Items[0].Fields.AllowUserToHideTheBanner = true; source.Items[0].Fields.ShowOnTheHomepageOnly = true; foreach (var subContentItems in source.Items.FirstOrDefault().Fields.Content.Content) { subContentItems.NodeType = "paragraph"; subContentItems.Content = new List <ContentDefinition> { new ContentDefinition { NodeType = "text", Value = contentValue } }; } var actual = new BannerPageModel().Build(source); actual.MainContent.Should().NotBeNullOrEmpty(); actual.MainContent.ElementAt(0).Title.Should().NotBeNullOrWhiteSpace(); actual.MainContent.ElementAt(0).AllowUserToHideTheBanner.Should().BeTrue(); actual.MainContent.ElementAt(0).BackgroundColour.Should().NotBeNullOrWhiteSpace(); actual.MainContent.ElementAt(0).ShowOnTheHomepageOnly.Should().BeTrue(); actual.MainContent.ElementAt(0).Items.Any().Should().BeTrue(); }
public async Task Then_The_Api_Is_Called_With_The_Valid_Request_Parameters_And_The_Article_Is_Returned( GetArticleByHubAndSlugQuery query, GetMenuQueryResult menuResult, GetBannerQueryResult bannerResult, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent, CmsContent apiResponse, CmsPageModel response, [Frozen] Mock <IContentService> contentService, [Frozen] Mock <IReliableCacheStorageService> service, [Frozen] Mock <IMediator> mediator, GetArticleByHubAndSlugQueryHandler handler) { contentService.Setup(x => x.HasContent(It.IsAny <ApiResponse <CmsContent> >())).Returns(true); service.Setup(o => o.GetData <CmsContent>( It.Is <GetArticleEntriesRequest>(c => c.GetUrl.Contains($"fields.hubType={query.Hub.ToTitleCase()}&fields.slug={query.Slug}")), $"{query.Hub.ToTitleCase()}_{query.Slug}_article", contentService.Object.HasContent)) .ReturnsAsync(apiResponse); mediator.SetupMenu(menuResult, menuContent); mediator.SetupBanners(bannerResult, bannerContent); var actual = await handler.Handle(query, CancellationToken.None); var cmsPageModel = response.Build(apiResponse, menuContent, bannerContent); actual.PageModel.Should().BeEquivalentTo(cmsPageModel); }
public void Then_The_Header_Image_Is_Added(CmsContent source, string contentValue, AssetFields fields, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange fields.File.Url = $"//{fields.File.Url}"; source.Includes.Asset = new List <Asset>() { new Asset { Sys = new AssetSys { Id = source.Items[0].Fields.HeaderImage.Sys.Id }, Fields = fields } }; ////Act var actual = new LandingPageModel().Build(source, menuContent, bannerContent); //Assert actual.MainContent.HeaderImage.Should().NotBeNull(); actual.MainContent.HeaderImage.EmbeddedResource.Id.Should().Be(source.Items[0].Fields.HeaderImage.Sys.Id); actual.MainContent.HeaderImage.EmbeddedResource.Title.Should().Be(fields.Title); actual.MainContent.HeaderImage.EmbeddedResource.FileName.Should().Be(fields.File.FileName); actual.MainContent.HeaderImage.EmbeddedResource.Url.Should().Be($"https:{fields.File.Url}"); actual.MainContent.HeaderImage.EmbeddedResource.ContentType.Should().Be(fields.File.ContentType); actual.MainContent.HeaderImage.EmbeddedResource.Size.Should().Be(fields.File.Details.Size); actual.MainContent.HeaderImage.EmbeddedResource.Description.Should().Be(fields.Description); }
public async Task <IActionResult> PutCmsContent([FromRoute] string id, [FromBody] CmsContent cmsContent) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != cmsContent.Id) { return(BadRequest()); } _context.Entry(cmsContent).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CmsContentExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public void Then_The_Content_Items_Are_Added_For_Block_Quotes(CmsContent source, string contentValue, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange foreach (var subContentItems in source.Items.FirstOrDefault().Fields.Content.Content) { subContentItems.NodeType = "blockquote"; subContentItems.Content = new List <ContentDefinition> { new ContentDefinition { NodeType = "paragraph", Content = new List <RelatedContent> { new RelatedContent { NodeType = "text", Value = contentValue } } } }; } //Act var actual = new CmsPageModel().Build(source, menuContent, bannerContent); //Assert actual.MainContent.Items.Should().NotBeEmpty(); actual.MainContent.Items.TrueForAll(c => c.Type.Equals("blockquote")).Should().BeTrue(); actual.MainContent.Items.TrueForAll(c => c.Values.FirstOrDefault().Equals(contentValue)).Should().BeTrue(); }
public void Then_The_Content_Items_Are_Added_For_Links(CmsContent source, string contentValue, string uri, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange var expectedUri = $"https://{uri}/"; foreach (var subContentItems in source.Items.FirstOrDefault().Fields.Content.Content) { subContentItems.NodeType = "paragraph"; subContentItems.Content = new List <ContentDefinition> { new ContentDefinition { NodeType = "hyperlink", Content = new List <RelatedContent> { new RelatedContent { Value = contentValue, } }, Data = new RelatedData { Uri = new Uri(expectedUri) } } }; } //Act var actual = new CmsPageModel().Build(source, menuContent, bannerContent); //Assert actual.MainContent.Items.TrueForAll(c => c.Type.Equals("paragraph")).Should().BeTrue(); actual.MainContent.Items.TrueForAll(c => c.Values.FirstOrDefault().ToString() == $"[{contentValue}]({expectedUri})").Should().BeTrue(); }
public async Task Then_The_Api_Is_Called_With_The_Valid_Request_Parameters_And_The_Landing_Page_Is_Returned( GetPreviewLandingPageQuery query, GetMenuQueryResult menuResult, MenuPageModel.MenuPageContent menuContent, CmsContent apiResponse, HubPageModel response, GetBannerQueryResult bannerResult, BannerPageModel bannerContent, [Frozen] Mock <IContentfulPreviewApiClient <ContentfulPreviewApiConfiguration> > apiClient, [Frozen] Mock <IMediator> mediator, GetPreviewLandingPageQueryHandler handler) { apiClient.Setup(o => o.Get <CmsContent>( It.Is <GetLandingPageRequest>(c => c.GetUrl.Contains($"fields.hubType={query.Hub.ToTitleCase()}&fields.slug={query.Slug}")))) .ReturnsAsync(apiResponse); mediator.SetupMenu(menuResult, menuContent); mediator.SetupBanners(bannerResult, bannerContent); var actual = await handler.Handle(query, CancellationToken.None); actual.PageModel.Should().BeEquivalentTo(response.Build(apiResponse, menuContent, bannerContent)); }
private static List <UrlDetails> SetLandingPageDetails(CmsContent hub) { return(hub.Items.Select(item => new UrlDetails { Hub = item?.Fields.HubType, Title = item?.Fields.Title, Slug = item?.Fields.Slug, PageType = item.Sys.ContentType.Sys.Id.GetPageTypeValue(), ParentSlug = ParentPageSlug(item, hub) }).ToList()); }
public void Then_If_The_CmsContent_Is_Null_Then_True_Returned() { CmsContent ci = null; var actual = ci.ContentItemsAreNullOrEmpty(); actual.Should().BeTrue(); }
public SiteMapPageModel Build(CmsContent hub) { if (hub.ContentItemsAreNullOrEmpty()) { return(null); } return(GenerateHubPageModel(SetLandingPageDetails(hub))); }
public void Then_The_Urls_Are_Built(CmsContent source) { var actual = new SiteMapPageModel().Build(source); actual.MainContent.Pages.Should().NotBeNullOrEmpty(); actual.MainContent.Pages[0].Title.Should().NotBeNullOrWhiteSpace(); actual.MainContent.Pages[0].Hub.Should().NotBeNullOrWhiteSpace(); actual.MainContent.Pages[0].Slug.Should().NotBeNullOrWhiteSpace(); }
public IActionResult CreateOrUpdate([FromBody] CmsContent data) { if (string.IsNullOrEmpty(data.Title)) { return(Json(new JsonResponse <string> { code = 1, message = "Title can not be empty" })); } if (data.Id == null || data.Id == Guid.Empty) { data.Id = Guid.NewGuid(); } data = data.CalculateThumbnail(); using (var db = new MoneyNoteDbContext()) { var exited = db.CmsContents.FirstOrDefault(i => i.Id == data.Id); if (exited == null) { data.CountView = 0; db.CmsContents.Add(data); } else { exited.ParentId = data.ParentId; exited.Title = data.Title; exited.Thumbnail = data.Thumbnail; exited.UrlRef = data.UrlRef; exited.Description = data.Description; exited.IsDeleted = data.IsDeleted; exited.ThumbnailWidth = data.ThumbnailWidth; exited.ThumbnailHeight = data.ThumbnailHeight; exited.VideoWidth = data.VideoWidth; exited.VideoHeight = data.VideoHeight; exited.IsPublished = data.IsPublished; } db.SaveChanges(); var existed = db.CmsRelations.Where(i => i.ContentId == data.Id).ToList(); db.RemoveRange(existed); db.SaveChanges(); db.AddRange(data.CategoryIds.Select(c => new CmsRelation { ContentId = data.Id, CategoryId = c }).ToList()); db.SaveChanges(); } return(Json(new JsonResponse <CmsContent> { data = data })); }
public static bool ContentItemsAreNullOrEmpty(this CmsContent pageContent) { if (pageContent == null || pageContent.Total == 0) { return(true); } var item = pageContent.Items.FirstOrDefault(); return(item == null); }
public void Then_True_Is_Returned_If_Total_Is_Greater_Than_Zero_And_Not_Null_Content( CmsContent model, ContentService service) { //Act var actual = service.HasContent(new ApiResponse <CmsContent>(model, HttpStatusCode.OK, "")); //Assert actual.Should().BeTrue(); }
A_CmsContent_Object_Is_Passed_To_ContentItemsAreNullOrEmpty_And_The_Total_Is_Zero_Then_Returns_True() { var ci = new CmsContent { Total = 0 }; var actual = ci.ContentItemsAreNullOrEmpty(); actual.Should().BeTrue(); }
private CmsPageModel GenerateCmsPageModel(CmsContent article, Item item, PageType pageTypeResult, List <ContentItem> contentItems, Entry parentPage, MenuPageModel.MenuPageContent menu, BannerPageModel banners) { return(new CmsPageModel { PageAttributes = new PageModel { Title = item.Fields.Title, Summary = item.Fields.Summary, Slug = item.Fields.Slug, HubType = item.Fields.HubType, MetaDescription = item.Fields.MetaDescription, PageType = pageTypeResult, }, MainContent = new PageContent { Items = contentItems }, Attachments = item.Fields.Attachments?.Select(attachment => article.GetEmbeddedResource(attachment.Sys.Id)) .ToList(), RelatedArticles = article.Includes?.Entry != null ? article .Includes .Entry.Where(c => c.Sys?.ContentType?.Sys?.Type != null && c.Sys.ContentType.Sys.Type.Equals("link", StringComparison.CurrentCultureIgnoreCase) && c.Sys.ContentType.Sys.LinkType.Equals("ContentType", StringComparison.CurrentCultureIgnoreCase) && Enum.TryParse <PageType>(c.Sys.ContentType.Sys.Id, true, out var type) && type == PageType.Article ) .Select(entry => new PageModel { Slug = entry.Fields.Slug, Summary = entry.Fields.Summary, Title = entry.Fields.Title, HubType = entry.Fields.HubType, MetaDescription = entry.Fields.MetaDescription }) .ToList() : new List <PageModel>(), ParentPage = parentPage != null ? new PageModel { Slug = parentPage.Fields.Slug, Title = parentPage.Fields.Title, Summary = parentPage.Fields.Summary, HubType = parentPage.Fields.HubType, MetaDescription = parentPage.Fields.MetaDescription } : null, MenuContent = menu, TabbedContents = ProcessTabbedContent(article, item), BannerModels = banners });
private static UrlDetails SetLandingPageDetails(CmsContent hub, Entry entry) { var parentPage = hub.Includes.Entry.FirstOrDefault(c => c.Sys.Id.Equals(entry.Fields.LandingPage?.Sys.Id)); return(new UrlDetails { Hub = parentPage?.Fields.HubType, Title = parentPage?.Fields.Title, Slug = parentPage?.Fields.Slug }); }
public ApiMenuPageModel Build(CmsContent menu) { if (menu.ContentItemsAreNullOrEmpty()) { return(null); } var menuItems = ProcessMenuItems(menu); return(GenerateHubPageModel(SetMenuDetails(menuItems))); }
public BannerPageModel Build(CmsContent banner) { if (banner.ContentItemsAreNullOrEmpty()) { return(null); } var banners = IterateBannerItems(banner); return(GenerateHubPageModel(banners)); }
private static string ParentPageSlug(Item item, CmsContent hub) { if (string.Compare(item.Sys.ContentType.Sys.Id, "landingPage", StringComparison.OrdinalIgnoreCase) == 0) { return(string.Empty); } var parentPage = hub.Includes.Entry.FirstOrDefault(c => c.Sys.Id.Equals(item.Fields.LandingPage?.Sys?.Id)); return(parentPage?.Fields?.Slug); }
public void Then_If_Total_Is_Zero_Items_Returned_Then_Null_Returned(CmsContent source, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange source.Total = 0; //Act var actual = new CmsPageModel().Build(source, menuContent, bannerContent); //Assert actual.Should().BeNull(); }
public void Then_No_Content_Items_Returns_Empty_List(CmsContent source, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange source.Items.FirstOrDefault().Fields.Content = null; //Act var actual = new CmsPageModel().Build(source, menuContent, bannerContent); //Assert actual.MainContent.Items.Should().BeEmpty(); }
public void Then_If_Total_Is_Zero_Items_Returned_Then_Null_Returned(CmsContent source) { //Arrange source.Total = 0; //Act var actual = new MenuPageModel().Build(source); //Assert actual.Should().BeNull(); }
public void Then_The_Page_Level_Fields_Are_Set(CmsContent source, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Act var actual = new CmsPageModel().Build(source, menuContent, bannerContent); //Assert actual.PageAttributes.Title.Should().Be(source.Items.FirstOrDefault()?.Fields.Title); actual.PageAttributes.MetaDescription.Should().Be(source.Items.FirstOrDefault()?.Fields.MetaDescription); actual.PageAttributes.Slug.Should().Be(source.Items.FirstOrDefault()?.Fields.Slug); actual.PageAttributes.HubType.Should().Be(source.Items.FirstOrDefault()?.Fields.HubType); actual.PageAttributes.Summary.Should().Be(source.Items.FirstOrDefault()?.Fields.Summary); }
public void Then_Any_Linked_Types_Are_Added_To_The_Content_Items(CmsContent source, string contentValue, string linkedContentId, List <List <string> > tableData, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange source.Items.FirstOrDefault().Fields.Content.Content = new List <SubContentItems> { new SubContentItems { NodeType = "paragraph", Content = new List <ContentDefinition> { new ContentDefinition { Content = new List <RelatedContent>(), Data = new RelatedData { Target = new LandingPage { Sys = new LandingPageSys { Id = linkedContentId } } }, NodeType = "embedded-entry-inline" } } } }; source.Includes.Entry = new List <Entry> { new Entry { Sys = new AssetSys { Id = linkedContentId, }, Fields = new EntryFields { Table = new Table { TableData = tableData } } } }; //Act var actual = new CmsPageModel().Build(source, menuContent, bannerContent); //Assert actual.MainContent.Items.TrueForAll(c => c.Type.Equals("paragraph")).Should().BeTrue(); actual.MainContent.Items.FirstOrDefault().TableValue.Should().BeEquivalentTo(tableData); }
protected void Page_Load(object sender, EventArgs e) { UserControl breadcrum = (UserControl)(CmsContent.FindControl("BreadCrum")); if (Request.QueryString["format"] != null) { if (Convert.ToString(Request.QueryString["format"]) == "print") { breadcrum.Visible = false; } } }
public void Then_No_Content_Items_Returns_Empty_Header_Image_And_Cards(CmsContent source, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange source.Items.FirstOrDefault().Fields.HeaderImage = null; //Act var actual = new LandingPageModel().Build(source, menuContent, bannerContent); //Assert actual.MainContent.HeaderImage.Should().BeNull(); actual.MainContent.Cards.Should().BeEmpty(); }
public void Then_If_No_Parent_Page_Is_Set_Then_Null_Returned_For_Parent_Page(CmsContent source, string parentId, MenuPageModel.MenuPageContent menuContent, BannerPageModel bannerContent) { //Arrange source.Items.FirstOrDefault().Fields.LandingPage = null; //Act var actual = new CmsPageModel().Build(source, menuContent, bannerContent); //Assert actual.ParentPage.Should().BeNull(); }
public async Task <IActionResult> PostCmsContent([FromBody] CmsContent cmsContent) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.CmsContent.Add(cmsContent); await _context.SaveChangesAsync(); return(CreatedAtAction("GetCmsContent", new { id = cmsContent.Id }, cmsContent)); }