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);
		}
Exemple #12
0
		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());
		}
Exemple #13
0
		public static MvcHtmlString ForumReadIndicator(this HtmlHelper helper, Forum forum, CategorizedForumContainer container, string path)
		{
			return ForumReadIndicator(helper, forum, container, path, null);
		}
Exemple #14
0
		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;
		}
Exemple #15
0
		public CategorizedForumContainer GetCategorizedForumContainer()
		{
			var forums = _forumRepository.GetAll();
			var categories = _categoryRepository.GetAll();
			var container = new CategorizedForumContainer(categories, forums);
			container.ForumTitle = _settingsManager.Current.ForumTitle;
			return container;
		}