Browse Source

Added missing tests for forum_is_unread

sh4nks 10 years ago
parent
commit
b573c4fd38
1 changed files with 30 additions and 7 deletions
  1. 30 7
      tests/unit/utils/test_helpers.py

+ 30 - 7
tests/unit/utils/test_helpers.py

@@ -1,6 +1,8 @@
 #-*- coding: utf-8 -*-
-from flask_login import login_user
+import datetime
 from flaskbb.utils.helpers import slugify, forum_is_unread
+from flaskbb.utils.settings import flaskbb_config
+from flaskbb.forum.models import Forum
 
 
 def test_slugify():
@@ -11,13 +13,34 @@ def test_slugify():
 
 
 def test_forum_is_unread(guest, user, forum, topic, forumsread):
-    """Test the forum is unread function for a a not logged in user."""
-    assert forum_is_unread(None, None, guest) == False
+    """Test the forum is unread function."""
 
-    assert forum_is_unread(forum, None, user) == True
+    # for a guest
+    assert not forum_is_unread(None, None, guest)
 
-    assert forum_is_unread(forum, forumsread, user) == True
+    # for a logged in user without a forumsread
+    assert forum_is_unread(forum, None, user)
 
-    topic.delete()
+    # same, just with forumsread
+    assert forum_is_unread(forum, forumsread, user)
+
+    # lets clear the forumsread relation
+    # but before we have to add an read entry in forumsread and topicsread
+    topic.update_read(user, topic.forum, forumsread)
+
+    time_read = datetime.datetime.utcnow() - datetime.timedelta(hours=1)
+    forumsread.cleared = time_read  # lets cheat here a bit :P
+    forumsread.last_read = datetime.datetime.utcnow()
+    forumsread.save()
+    assert not forum_is_unread(forum, forumsread, user)
 
-    assert forum_is_unread(forum, None, user) == False
+    # read tracker is disabled
+    flaskbb_config["TRACKER_LENGTH"] = 0
+    assert not forum_is_unread(forum, forumsread, user)
+
+    # no topics in this forum
+    topic.delete()
+    forum = Forum.query.filter_by(id=forum.id).first()
+    flaskbb_config["TRACKER_LENGTH"] = 1  # activate the tracker again
+    assert forum.topic_count == 0
+    assert not forum_is_unread(forum, None, user)