public void ForumsAppearInCategories() { var c1 = new Category { CategoryID = 1, Title = "Cat1" }; var c2 = new Category { CategoryID = 2, Title = "Cat2" }; var f1 = new Forum { ForumID = 1, CategoryID = null }; var f2 = new Forum { ForumID = 2, CategoryID = 1 }; var f3 = new Forum { ForumID = 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.Contains(f2, container.CategoryDictionary[c1]); Assert.Contains(f3, container.CategoryDictionary[c2]); Assert.DoesNotContain(f1, container.CategoryDictionary[c1]); Assert.DoesNotContain(f3, container.CategoryDictionary[c1]); }
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 UncategorizedForumsShowUpOnProperty() { var c1 = new Category { CategoryID = 1 }; var c2 = new Category { CategoryID = 2 }; var f1 = new Forum { ForumID = 1, CategoryID = null }; var f2 = new Forum { ForumID = 2, CategoryID = 1 }; var f3 = new Forum { ForumID = 3, CategoryID = 2 }; var f4 = new Forum { ForumID = 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.Contains(f1, container.UncategorizedForums); Assert.DoesNotContain(f2, container.UncategorizedForums); Assert.DoesNotContain(f3, container.UncategorizedForums); Assert.Contains(f4, container.UncategorizedForums); }
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 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.Equal(cats, container.AllCategories); Assert.Equal(forums, container.AllForums); }
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 CategorizedForumContainer GetCategorizedForumContainerFilteredForUser(User user) { var nonViewableForumIDs = GetNonViewableForumIDs(user); var forums = _forumRepository.GetAllVisible().Where(f => !nonViewableForumIDs.Contains(f.ForumID)); var totalPost = 0; var totalTopic = 0; foreach (var item in forums) { if (user.UserType == 1) { item.PostCount = _postRepository.GetReplyCountByStudent(item.ForumID, false, 1); } else { item.PostCount = _postRepository.GetReplyCountByStudent(item.ForumID, false, 2); } totalPost += item.PostCount; totalTopic += item.TopicCount; } var categories = _categoryRepository.GetAll(); var container = new CategorizedForumContainer(categories, forums); _lastReadService.GetForumReadStatus(user, container); container.ForumTitle = _settingsManager.Current.ForumTitle; container.Posts = _postRepository.GetAll(); container.Comments = _postRepository.GetAllComments(); container.users = user; return(container); }
public void CategoriesInCorrectOrder() { var c1 = new Category { CategoryID = 1, SortOrder = 5 }; var c2 = new Category { CategoryID = 2, SortOrder = 1 }; var c3 = new Category { CategoryID = 3, SortOrder = 3 }; var f1 = new Forum { ForumID = 1, CategoryID = 1 }; var f2 = new Forum { ForumID = 2, CategoryID = 2 }; var f3 = new Forum { ForumID = 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 CategoryWithNoForumsDoesNotAppear() { var c1 = new Category { CategoryID = 1, Title = "Cat1" }; var c2 = new Category { CategoryID = 2, Title = "Cat2" }; var c3 = new Category { CategoryID = 3, Title = "Cat3" }; var f1 = new Forum { ForumID = 1, CategoryID = null }; var f2 = new Forum { ForumID = 2, CategoryID = 1 }; var f3 = new Forum { ForumID = 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 CategorizedForumContainer GetCategorizedForumContainer() { var forums = _forumRepository.GetAll(); var categories = _categoryRepository.GetAll(); var container = new CategorizedForumContainer(categories, forums); container.ForumTitle = _settingsManager.Current.ForumTitle; return(container); }
public async Task <CategorizedForumContainer> GetCategorizedForumContainer() { var forums = _forumRepository.GetAll(); var categories = await _categoryRepository.GetAll(); var container = new CategorizedForumContainer(categories, forums.Result); container.ForumTitle = _settingsManager.Current.ForumTitle; return(container); }
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 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 void ForumReadStatusUserNewPostsNoLastReadRecords() { 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>()); 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 async Task ForumReadStatusUserNewPostsNoLastReadRecords() { var service = GetService(); var forum = new Forum { ForumID = 1, LastPostTime = new DateTime(2000, 1, 1, 5, 0, 0) }; var user = new User { UserID = 2 }; _lastReadRepo.Setup(l => l.GetLastReadTimesForForums(2)).ReturnsAsync(new Dictionary <int, DateTime>()); var container = new CategorizedForumContainer(new List <Category>(), new[] { forum }); await service.GetForumReadStatus(user, container); Assert.Single(container.ReadStatusLookup); Assert.Equal(ReadStatus.NewPosts, container.ReadStatusLookup[1]); }
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.Single(container.ReadStatusLookup); Assert.Equal(ReadStatus.NoNewPosts | ReadStatus.Closed, container.ReadStatusLookup[1]); }
public async Task ForumReadStatusForNoUser() { var service = GetService(); var forum1 = new Forum { ForumID = 1 }; var forum2 = new Forum { ForumID = 2, IsArchived = true }; var forum3 = new Forum { ForumID = 3 }; var container = new CategorizedForumContainer(new List <Category>(), new[] { forum1, forum2, forum3 }); await service.GetForumReadStatus(null, container); Assert.Equal(3, container.ReadStatusLookup.Count); Assert.Equal(ReadStatus.NoNewPosts, container.ReadStatusLookup[1]); Assert.Equal(ReadStatus.NoNewPosts | ReadStatus.Closed, container.ReadStatusLookup[2]); Assert.Equal(ReadStatus.NoNewPosts, container.ReadStatusLookup[3]); }
public void UncategorizedInCorrectOrder() { var f1 = new Forum { ForumID = 1, SortOrder = 5 }; var f2 = new Forum { ForumID = 2, SortOrder = 1 }; var f3 = new Forum { ForumID = 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 static MvcHtmlString ForumReadIndicator(this HtmlHelper helper, Forum forum, CategorizedForumContainer container, string path) { return(ForumReadIndicator(helper, forum, container, path, null)); }
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())); }