Просмотр исходного кода

Added test for the forum_is_unread function #ep14boat

Harro van der Klauw 11 лет назад
Родитель
Сommit
8ef6d6d1de
3 измененных файлов с 40 добавлено и 5 удалено
  1. 18 1
      tests/fixtures/forum.py
  2. 7 2
      tests/fixtures/user.py
  3. 15 2
      tests/unit/utils/test_helpers.py

+ 18 - 1
tests/fixtures/forum.py

@@ -1,6 +1,8 @@
+"""Fixtures for the forum models."""
+import datetime
 import pytest
 import pytest
 
 
-from flaskbb.forum.models import Forum, Category, Topic, Post
+from flaskbb.forum.models import Forum, Category, Topic, Post, ForumsRead
 
 
 
 
 @pytest.fixture
 @pytest.fixture
@@ -33,3 +35,18 @@ def topic_moderator(forum, moderator_user):
     topic = Topic(title="Test Topic Moderator")
     topic = Topic(title="Test Topic Moderator")
     post = Post(content="Test Content Moderator")
     post = Post(content="Test Content Moderator")
     return topic.save(forum=forum, user=moderator_user, post=post)
     return topic.save(forum=forum, user=moderator_user, post=post)
+
+@pytest.fixture
+def forumsread_last_read():
+    """The datetime of the formsread last_read."""
+    return datetime.datetime.utcnow() - datetime.timedelta(hours=1)
+
+@pytest.fixture
+def forumsread(user, forum, forumsread_last_read):
+    """Create a forumsread object for the user and a forum."""
+    forumsread = ForumsRead()
+    forumsread.user_id = user.id
+    forumsread.forum_id = forum.id
+    forumsread.last_read = forumsread_last_read
+    forumsread.save()
+    return forumsread

+ 7 - 2
tests/fixtures/user.py

@@ -1,6 +1,11 @@
 import pytest
 import pytest
 
 
-from flaskbb.user.models import User
+from flaskbb.user.models import User, Guest
+
+@pytest.fixture
+def guest():
+    """Return a guest (not logged in) user."""
+    return Guest()
 
 
 
 
 @pytest.fixture
 @pytest.fixture
@@ -13,7 +18,7 @@ def user(default_groups):
 
 
 
 
 @pytest.fixture
 @pytest.fixture
-def moderator_user(forum, default_groups):
+def moderator_user(user, forum, default_groups):
     """Creates a test user with moderator permissions."""
     """Creates a test user with moderator permissions."""
 
 
     user = User(username="test_mod", email="test_mod@example.org",
     user = User(username="test_mod", email="test_mod@example.org",

+ 15 - 2
tests/unit/utils/test_helpers.py

@@ -1,10 +1,23 @@
 #-*- coding: utf-8 -*-
 #-*- coding: utf-8 -*-
-from flaskbb.utils.helpers import slugify
+from flask.ext.login import login_user
+from flaskbb.utils.helpers import slugify, forum_is_unread
 
 
 
 
 def test_slugify():
 def test_slugify():
     """Test the slugify helper method."""
     """Test the slugify helper method."""
-
     assert slugify(u'Hello world') == u'hello-world'
     assert slugify(u'Hello world') == u'hello-world'
 
 
     assert slugify(u'¿Cómo está?') == u'como-esta'
     assert slugify(u'¿Cómo está?') == u'como-esta'
+
+
+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
+
+    assert forum_is_unread(forum, None, user) == True
+
+    assert forum_is_unread(forum, forumsread, user) == True
+
+    topic.delete()
+
+    assert forum_is_unread(forum, None, user) == False