Browse Source

More tests for threads lists and helpers

Rafał Pitoń 10 years ago
parent
commit
ff40c3295e

+ 1 - 0
misago/threads/permissions.py

@@ -226,6 +226,7 @@ def add_acl_to_forum(user, forum):
 
     if user.is_authenticated():
         algebra.sum_acls(forum.acl, acls=[forum_acl],
+            can_start_threads=algebra.greater,
             can_reply_threads=algebra.greater,
             can_edit_threads=algebra.greater,
             can_edit_replies=algebra.greater,

+ 0 - 1
misago/threads/tests/test_forum_threads_view.py → misago/threads/tests/test_forumthreads_view.py

@@ -1,6 +1,5 @@
 from django.contrib.auth import get_user_model
 from django.core.urlresolvers import reverse
-from django.test import TestCase
 from django.utils.translation import ugettext as _
 
 from misago.acl import add_acl

+ 54 - 0
misago/threads/tests/test_threadslist_view.py

@@ -0,0 +1,54 @@
+from django.test import TestCase
+
+
+from misago.threads.views.generic.threads import Sorting
+
+
+class SortingTests(TestCase):
+    def setUp(self):
+        self.sorting = Sorting('misago:forum', {
+            'forum_slug': "test-forum",
+            'forum_id': 42,
+        })
+
+    def test_clean_kwargs_removes_default_sorting(self):
+        """clean_kwargs removes default sorting"""
+        default_sorting = self.sorting.sortings[0]['method']
+
+        cleaned_kwargs = self.sorting.clean_kwargs({'sort': default_sorting})
+        cleaned_kwargs['pie'] = 'yum-yum'
+        self.assertEqual(cleaned_kwargs, {'pie': 'yum-yum'})
+
+    def test_clean_kwargs_removes_invalid_sorting(self):
+        """clean_kwargs removes invalid sorting"""
+        default_sorting = self.sorting.sortings[0]['method']
+
+        cleaned_kwargs = self.sorting.clean_kwargs({'sort': 'bad-sort'})
+        cleaned_kwargs['pie'] = 'yum-yum'
+        self.assertEqual(cleaned_kwargs, {'pie': 'yum-yum'})
+
+    def test_clean_kwargs_preserves_valid_sorting(self):
+        """clean_kwargs preserves valid sorting"""
+        default_sorting = self.sorting.sortings[0]['method']
+
+        cleaned_kwargs = self.sorting.clean_kwargs({'sort': 'oldest'})
+        cleaned_kwargs['pie'] = 'yum-yum'
+        self.assertEqual(cleaned_kwargs, {'sort': 'oldest', 'pie': 'yum-yum'})
+
+    def test_set_sorting_sets_valid_method(self):
+        """set_sorting sets valid sorting"""
+        for sorting in self.sorting.sortings:
+            self.sorting.set_sorting(sorting['method'])
+            self.assertEqual(sorting, self.sorting.sorting)
+            self.assertEqual(sorting['name'], self.sorting.name)
+
+    def test_choices(self):
+        """choices returns set of valid choices"""
+        for sorting in self.sorting.sortings:
+            self.sorting.set_sorting(sorting['method'])
+            choices = [choice['name'] for choice in self.sorting.choices()]
+            self.assertNotIn(sorting['name'], choices)
+
+            for other_sorting in self.sorting.sortings:
+                if other_sorting != sorting:
+                    self.assertIn(other_sorting['name'], choices)

+ 2 - 3
misago/threads/views/generic/forum.py

@@ -7,14 +7,13 @@ from misago.forums.lists import get_forums_list, get_forum_path
 
 from misago.threads.models import ANNOUNCEMENT, Thread, Label
 from misago.threads.permissions import exclude_invisible_threads
-from misago.threads.views.generic.threads import (Helper, Sorting, Threads,
-                                                  ThreadsView)
+from misago.threads.views.generic.threads import Sorting, Threads, ThreadsView
 
 
 __all__ = ['ForumFiltering', 'ForumThreads', 'ForumView']
 
 
-class ForumFiltering(Helper):
+class ForumFiltering(object):
     def __init__(self, forum, link_name, link_params):
         self.forum = forum
         self.link_name = link_name

+ 3 - 6
misago/threads/views/generic/threads.py

@@ -9,14 +9,11 @@ from misago.threads.models import Label
 from misago.threads.views.generic.base import ViewBase
 
 
-__all__ = ['Helper', 'Sorting', 'Threads', 'ThreadsView']
+__all__ = ['Sorting', 'Threads', 'ThreadsView']
 
 
-class Helper(object):
-    pass
 
-
-class Threads(Helper):
+class Threads(object):
     def __init__(self, user):
         self.user = user
 
@@ -36,7 +33,7 @@ class Threads(Helper):
         threadstracker.make_read_aware(self.user, threads)
 
 
-class Sorting(Helper):
+class Sorting(object):
     sortings = (
         {
             'method': 'recently-replied',