private void FillTags(CmsPage page) { if (null == page) { return; } page.Tags.Clear(); if (null != page.TagString && !string.IsNullOrEmpty(page.TagString.AttemptedValue)) { string[] tags = page.TagString.AttemptedValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string tag in tags) { string tagName = tag.Trim(); if (string.IsNullOrEmpty(tagName)) { continue; } CmsTag cmsTag = pageData.LoadTag(tagName); if (null != cmsTag && !page.Tags.Contains(cmsTag)) { page.Tags.Add(cmsTag); } else { IEnumerable <CmsTag> alreadyCreated = page.Tags.Where(x => x.Name == tag.Trim()); if (alreadyCreated.Count() == 0) { page.Tags.Add(new CmsTag { Name = tag.Trim() }); } } } } }
public void Should_Return_Collection() { var dataContext = new Mock <IAtomicCmsDataRepository>(); var logger = new Mock <LoggingService>(); ICollection <PageTag> pagesTagsCollection = new List <PageTag>(); CmsPage page1 = new CmsPage() { Id = 1 }; CmsPage page2 = new CmsPage() { Id = 2 }; CmsPage page3 = new CmsPage() { Id = 3 }; CmsTag tag1 = new CmsTag() { Id = 1 }; CmsTag tag2 = new CmsTag() { Id = 2 }; CmsTag tag3 = new CmsTag() { Id = 3 }; pagesTagsCollection.Add(new PageTag() { Page = page1, Tag = tag1 }); pagesTagsCollection.Add(new PageTag() { Page = page1, Tag = tag2 }); pagesTagsCollection.Add(new PageTag() { Page = page2, Tag = tag1 }); pagesTagsCollection.Add(new PageTag() { Page = page2, Tag = tag3 }); pagesTagsCollection.Add(new PageTag() { Page = page3, Tag = tag1 }); pagesTagsCollection.Add(new PageTag() { Page = page3, Tag = tag2 }); dataContext.Setup(x => x.GetPagesTags()).Returns(pagesTagsCollection); WidgetService widgetService = new WidgetService(dataContext.Object, logger.Object); var c = new WidgetsController(widgetService); ActionResult ar = c.TagCloud(); var view = ar as PartialViewResult; Assert.IsNotNull(view); Assert.IsNotEmpty((ICollection)view.ViewData.Model); ICollection <TagCount> tagCounts = view.ViewData.Model as ICollection <TagCount>; Assert.IsNotNull(tagCounts); Assert.AreEqual(3, tagCounts.Count); Assert.AreEqual(3, new List <TagCount>(tagCounts)[0].Count); Assert.AreEqual(2, new List <TagCount>(tagCounts)[1].Count); Assert.AreEqual(1, new List <TagCount>(tagCounts)[2].Count); }