|
@@ -1,53 +1,47 @@
|
|
|
|
+import json
|
|
|
|
+
|
|
from django.urls import reverse
|
|
from django.urls import reverse
|
|
|
|
|
|
-from misago.acl.testutils import override_acl
|
|
|
|
|
|
+from misago.acl.test import patch_user_acl
|
|
from misago.categories.models import Category
|
|
from misago.categories.models import Category
|
|
-from misago.categories.utils import get_categories_tree
|
|
|
|
from misago.users.testutils import AuthenticatedUserTestCase
|
|
from misago.users.testutils import AuthenticatedUserTestCase
|
|
|
|
|
|
|
|
|
|
class CategoryViewsTests(AuthenticatedUserTestCase):
|
|
class CategoryViewsTests(AuthenticatedUserTestCase):
|
|
|
|
+ def setUp(self):
|
|
|
|
+ super().setUp()
|
|
|
|
+
|
|
|
|
+ self.category = Category.objects.get(slug='first-category')
|
|
|
|
+
|
|
def test_index_renders(self):
|
|
def test_index_renders(self):
|
|
"""categories list renders for authenticated"""
|
|
"""categories list renders for authenticated"""
|
|
response = self.client.get(reverse('misago:categories'))
|
|
response = self.client.get(reverse('misago:categories'))
|
|
-
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertContains(response, node.name)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertContains(response, node.get_absolute_url())
|
|
|
|
|
|
+ self.assertContains(response, self.category.name)
|
|
|
|
+ self.assertContains(response, self.category.get_absolute_url())
|
|
|
|
|
|
def test_index_renders_for_guest(self):
|
|
def test_index_renders_for_guest(self):
|
|
"""categories list renders for guest"""
|
|
"""categories list renders for guest"""
|
|
self.logout_user()
|
|
self.logout_user()
|
|
|
|
|
|
response = self.client.get(reverse('misago:categories'))
|
|
response = self.client.get(reverse('misago:categories'))
|
|
|
|
+ self.assertContains(response, self.category.name)
|
|
|
|
+ self.assertContains(response, self.category.get_absolute_url())
|
|
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertContains(response, node.name)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertContains(response, node.get_absolute_url())
|
|
|
|
-
|
|
|
|
|
|
+ @patch_user_acl({'visible_categories': []})
|
|
def test_index_no_perms_renders(self):
|
|
def test_index_no_perms_renders(self):
|
|
"""categories list renders no visible categories for authenticated"""
|
|
"""categories list renders no visible categories for authenticated"""
|
|
- override_acl(self.user, {'visible_categories': []})
|
|
|
|
response = self.client.get(reverse('misago:categories'))
|
|
response = self.client.get(reverse('misago:categories'))
|
|
|
|
+ self.assertNotContains(response, self.category.name)
|
|
|
|
+ self.assertNotContains(response, self.category.get_absolute_url())
|
|
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertNotIn(node.name, response.content)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertNotContains(response, node.get_absolute_url())
|
|
|
|
-
|
|
|
|
|
|
+ @patch_user_acl({'visible_categories': []})
|
|
def test_index_no_perms_renders_for_guest(self):
|
|
def test_index_no_perms_renders_for_guest(self):
|
|
"""categories list renders no visible categories for guest"""
|
|
"""categories list renders no visible categories for guest"""
|
|
self.logout_user()
|
|
self.logout_user()
|
|
|
|
|
|
- override_acl(self.user, {'visible_categories': []})
|
|
|
|
response = self.client.get(reverse('misago:categories'))
|
|
response = self.client.get(reverse('misago:categories'))
|
|
-
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertNotIn(node.name, response.content)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertNotContains(response, node.get_absolute_url())
|
|
|
|
|
|
+ self.assertNotContains(response, self.category.name)
|
|
|
|
+ self.assertNotContains(response, self.category.get_absolute_url())
|
|
|
|
|
|
|
|
|
|
class CategoryAPIViewsTests(AuthenticatedUserTestCase):
|
|
class CategoryAPIViewsTests(AuthenticatedUserTestCase):
|
|
@@ -59,41 +53,27 @@ class CategoryAPIViewsTests(AuthenticatedUserTestCase):
|
|
def test_list_renders(self):
|
|
def test_list_renders(self):
|
|
"""api returns categories for authenticated"""
|
|
"""api returns categories for authenticated"""
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
-
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertContains(response, node.name)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertNotContains(response, node.get_absolute_url())
|
|
|
|
|
|
+ self.assertContains(response, self.category.name)
|
|
|
|
+ self.assertContains(response, self.category.get_absolute_url())
|
|
|
|
|
|
def test_list_renders_for_guest(self):
|
|
def test_list_renders_for_guest(self):
|
|
"""api returns categories for guest"""
|
|
"""api returns categories for guest"""
|
|
self.logout_user()
|
|
self.logout_user()
|
|
|
|
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
|
|
+ self.assertContains(response, self.category.name)
|
|
|
|
+ self.assertContains(response, self.category.get_absolute_url())
|
|
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertContains(response, node.name)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertNotContains(response, node.get_absolute_url())
|
|
|
|
-
|
|
|
|
|
|
+ @patch_user_acl({'visible_categories': []})
|
|
def test_list_no_perms_renders(self):
|
|
def test_list_no_perms_renders(self):
|
|
"""api returns no categories for authenticated"""
|
|
"""api returns no categories for authenticated"""
|
|
- override_acl(self.user, {'visible_categories': []})
|
|
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
|
|
+ assert json.loads(response.content) == []
|
|
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertNotIn(node.name, response.content)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertNotContains(response, node.get_absolute_url())
|
|
|
|
-
|
|
|
|
|
|
+ @patch_user_acl({'visible_categories': []})
|
|
def test_list_no_perms_renders_for_guest(self):
|
|
def test_list_no_perms_renders_for_guest(self):
|
|
"""api returns no categories for guest"""
|
|
"""api returns no categories for guest"""
|
|
self.logout_user()
|
|
self.logout_user()
|
|
|
|
|
|
- override_acl(self.user, {'visible_categories': []})
|
|
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
response = self.client.get(reverse('misago:api:category-list'))
|
|
-
|
|
|
|
- for node in get_categories_tree(self.user):
|
|
|
|
- self.assertNotContains(response, node.name)
|
|
|
|
- if node.level > 1:
|
|
|
|
- self.assertNotContains(response, node.get_absolute_url())
|
|
|
|
|
|
+ assert json.loads(response.content) == []
|