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

Merge branch 'master' of github.com:sh4nks/flaskbb

sh4nks 10 лет назад
Родитель
Сommit
41e2109bed

+ 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

+ 5 - 0
tests/unit/utils/test_permissions.py

@@ -92,3 +92,8 @@ def test_super_moderator_permissions(forum, super_moderator_user, topic):
 
 
     assert can_edit_user(super_moderator_user)
     assert can_edit_user(super_moderator_user)
     assert can_ban_user(super_moderator_user)
     assert can_ban_user(super_moderator_user)
+
+
+def test_can_moderate_without_permission(moderator_user):
+    """Test can moderate for a moderator_user without a permission."""
+    assert can_moderate(moderator_user) == False

+ 35 - 0
tests/unit/utils/test_widgets.py

@@ -0,0 +1,35 @@
+"""Tests for the utils/widgets.py file."""
+import datetime
+from flaskbb.utils.widgets import SelectDateWidget
+
+def test_select_date_widget():
+    """Test the SelectDateWidget."""
+    assert SelectDateWidget.FORMAT_CHOICES['%d'] == [(x, str(x)) for x in range(1, 32)]
+    assert SelectDateWidget.FORMAT_CHOICES['%m'] == [(x, str(x)) for x in range(1, 13)]
+
+    assert SelectDateWidget.FORMAT_CLASSES == {
+        '%d': 'select_date_day',
+        '%m': 'select_date_month',
+        '%Y': 'select_date_year'
+    }
+
+    select_date_widget = SelectDateWidget(years=[0, 1])
+
+    assert select_date_widget.FORMAT_CHOICES['%Y'] == [(0, '0'), (1, '1')]
+
+    class Field(object):
+        id = 'world'
+        name = 'helloWorld'
+        format = '%d %m %Y'
+        data = None
+
+    html = select_date_widget(field=Field())
+    assert 'world' in html
+    assert 'helloWorld' in html
+    assert 'class="select_date_day"' in html
+    assert 'class="select_date_month"' in html
+    assert 'class="select_date_year"' in html
+
+
+
+