public void UncategorizedInCorrectOrder() { var f1 = new Forum(1) { SortOrder = 5 }; var f2 = new Forum(2) { SortOrder = 1 }; var f3 = new Forum(3) { SortOrder = 3 }; var forums = new List<Forum> { f1, f2, f3 }; var container = new CategorizedForumContainer(new List<Category>(), forums); Assert.True(container.UncategorizedForums[0] == f2); Assert.True(container.UncategorizedForums[1] == f3); Assert.True(container.UncategorizedForums[2] == f1); }
public void AllCollectionsPersist() { var c1 = new Category(1); var c2 = new Category(2); var f1 = new Forum(1) { CategoryID = null }; var f2 = new Forum(2) { CategoryID = 1 }; var f3 = new Forum(3) { CategoryID = 2 }; var cats = new List<Category> { c1, c2 }; var forums = new List<Forum> { f1, f2, f3 }; var container = new CategorizedForumContainer(cats, forums); Assert.AreEqual(cats, container.AllCategories); Assert.AreEqual(forums, container.AllForums); }
public void ForumsAppearInCategories() { var c1 = new Category(1) { Title = "Cat1" }; var c2 = new Category(2) { Title = "Cat2" }; var f1 = new Forum(1) { CategoryID = null }; var f2 = new Forum(2) { CategoryID = 1 }; var f3 = new Forum(3) { CategoryID = 2 }; var cats = new List<Category> { c1, c2 }; var forums = new List<Forum> { f1, f2, f3 }; var container = new CategorizedForumContainer(cats, forums); Assert.True(container.CategoryDictionary[c1].Contains(f2)); Assert.True(container.CategoryDictionary[c2].Contains(f3)); Assert.False(container.CategoryDictionary[c1].Contains(f1)); Assert.False(container.CategoryDictionary[c1].Contains(f3)); }
public void CategoriesInCorrectOrder() { var c1 = new Category(1) { SortOrder = 5 }; var c2 = new Category(2) { SortOrder = 1 }; var c3 = new Category(3) { SortOrder = 3 }; var f1 = new Forum(1) { CategoryID = 1 }; var f2 = new Forum(2) { CategoryID = 2 }; var f3 = new Forum(3) { CategoryID = 3 }; var cats = new List<Category> {c1, c2, c3}; var forums = new List<Forum> {f1, f2, f3}; var container = new CategorizedForumContainer(cats, forums); Assert.True(container.CategoryDictionary.ToArray()[0].Key == c2); Assert.True(container.CategoryDictionary.ToArray()[1].Key == c3); Assert.True(container.CategoryDictionary.ToArray()[2].Key == c1); }
public void UncategorizedForumsShowUpOnProperty() { var c1 = new Category(1); var c2 = new Category(2); var f1 = new Forum(1) {CategoryID = null}; var f2 = new Forum(2) {CategoryID = 1}; var f3 = new Forum(3) {CategoryID = 2}; var f4 = new Forum(4) {CategoryID = 0}; var cats = new List<Category> {c1, c2}; var forums = new List<Forum> {f1, f2, f3, f4}; var container = new CategorizedForumContainer(cats, forums); Assert.True(container.UncategorizedForums.Contains(f1)); Assert.False(container.UncategorizedForums.Contains(f2)); Assert.False(container.UncategorizedForums.Contains(f3)); Assert.True(container.UncategorizedForums.Contains(f4)); }
public void GetForumReadStatus(User user, CategorizedForumContainer container) { Dictionary<int, DateTime> lastReads = null; if (user != null) lastReads = _lastReadRepository.GetLastReadTimesForForums(user.UserID); foreach (var forum in container.AllForums) { var status = ReadStatus.NoNewPosts; if (lastReads != null && lastReads.ContainsKey(forum.ForumID)) if (forum.LastPostTime > lastReads[forum.ForumID]) status = ReadStatus.NewPosts; if (lastReads != null && !lastReads.ContainsKey(forum.ForumID)) status = ReadStatus.NewPosts; if (forum.IsArchived) status |= ReadStatus.Closed; container.ReadStatusLookup.Add(forum.ForumID, status); } }
public void CategoryWithNoForumsDoesNotAppear() { var c1 = new Category(1) { Title = "Cat1" }; var c2 = new Category(2) { Title = "Cat2" }; var c3 = new Category(3) { Title = "Cat3" }; var f1 = new Forum(1) { CategoryID = null }; var f2 = new Forum(2) { CategoryID = 1 }; var f3 = new Forum(3) { CategoryID = 2 }; var cats = new List<Category> { c1, c2, c3 }; var forums = new List<Forum> { f1, f2, f3 }; var container = new CategorizedForumContainer(cats, forums); Assert.False(container.CategoryDictionary.ContainsKey(c3)); }
public void ForumReadStatusForNoUser() { var service = GetService(); var forum1 = new Forum(1); var forum2 = new Forum(2) { IsArchived = true }; var forum3 = new Forum(3); var container = new CategorizedForumContainer(new List<Category>(), new[] { forum1, forum2, forum3 }); service.GetForumReadStatus(null, container); Assert.AreEqual(3, container.ReadStatusLookup.Count); Assert.AreEqual(ReadStatus.NoNewPosts, container.ReadStatusLookup[1]); Assert.AreEqual(ReadStatus.NoNewPosts | ReadStatus.Closed, container.ReadStatusLookup[2]); Assert.AreEqual(ReadStatus.NoNewPosts, container.ReadStatusLookup[3]); }
public void ForumReadStatusUserNoNewPostsArchived() { var service = GetService(); var forum = new Forum(1) { LastPostTime = new DateTime(2000, 1, 1, 5, 0, 0), IsArchived = true }; var user = new User(2, DateTime.MinValue); _lastReadRepo.Setup(l => l.GetLastReadTimesForForums(2)).Returns(new Dictionary<int, DateTime> { { 1, new DateTime(2000, 1, 1, 7, 0, 0) } }); var container = new CategorizedForumContainer(new List<Category>(), new[] { forum }); service.GetForumReadStatus(user, container); Assert.AreEqual(1, container.ReadStatusLookup.Count); Assert.AreEqual(ReadStatus.NoNewPosts | ReadStatus.Closed, container.ReadStatusLookup[1]); }
public void ForumReadStatusUserNewPostsButNoTopicRecords() { var service = GetService(); var forum = new Forum(1) { LastPostTime = new DateTime(2000, 1, 1, 5, 0, 0) }; var user = new User(2, DateTime.MinValue); _lastReadRepo.Setup(l => l.GetLastReadTimesForForums(2)).Returns(new Dictionary<int, DateTime>()); _lastReadRepo.Setup(l => l.GetLastReadTimesForForum(user.UserID, forum.ForumID)).Returns(new DateTime(2000, 1, 1, 3, 0, 0)); var container = new CategorizedForumContainer(new List<Category>(), new[] { forum }); service.GetForumReadStatus(user, container); Assert.AreEqual(1, container.ReadStatusLookup.Count); Assert.AreEqual(ReadStatus.NewPosts, container.ReadStatusLookup[1]); }
public void ForumPermissions() { var controller = GetController(); var container = new CategorizedForumContainer(new List<Category>(), new List<Forum>()); _forumService.Setup(f => f.GetCategorizedForumContainer()).Returns(container); var result = controller.ForumPermissions(); _forumService.Verify(f => f.GetCategorizedForumContainer(), Times.Once()); Assert.AreSame(container, result.ViewData.Model); }
public static MvcHtmlString ForumReadIndicator(this HtmlHelper helper, Forum forum, CategorizedForumContainer container, string path, string cssClass) { var alt = Resources.NoNewPosts; var image = "NoNewIndicator.png"; if (container.ReadStatusLookup.ContainsKey(forum.ForumID)) { var status = container.ReadStatusLookup[forum.ForumID]; switch (status) { case ReadStatus.Closed | ReadStatus.NoNewPosts: alt = Resources.Archived; image = "ClosedIndicator.png"; break; case ReadStatus.Closed | ReadStatus.NewPosts: alt = Resources.ArchivedNewPosts; image = "NewClosedIndicator.png"; break; case ReadStatus.NewPosts: alt = Resources.NewPosts; image = "NewIndicator.png"; break; default: break; } } var build = new StringBuilder(); build.Append("<img src=\""); build.Append(path); build.Append(image); build.Append("\" alt=\""); build.Append(alt); build.Append("\""); if (!String.IsNullOrEmpty(cssClass)) { build.Append(" class=\""); build.Append(cssClass); build.Append("\""); } build.Append(" />"); return MvcHtmlString.Create(build.ToString()); }
public static MvcHtmlString ForumReadIndicator(this HtmlHelper helper, Forum forum, CategorizedForumContainer container, string path) { return ForumReadIndicator(helper, forum, container, path, null); }
public CategorizedForumContainer GetCategorizedForumContainerFilteredForUser(User user) { var nonViewableForumIDs = GetNonViewableForumIDs(user); var forums = _forumRepository.GetAllVisible().Where(f => !nonViewableForumIDs.Contains(f.ForumID)); var categories = _categoryRepository.GetAll(); var container = new CategorizedForumContainer(categories, forums); _lastReadService.GetForumReadStatus(user, container); container.ForumTitle = _settingsManager.Current.ForumTitle; return container; }
public CategorizedForumContainer GetCategorizedForumContainer() { var forums = _forumRepository.GetAll(); var categories = _categoryRepository.GetAll(); var container = new CategorizedForumContainer(categories, forums); container.ForumTitle = _settingsManager.Current.ForumTitle; return container; }