Files
django-wiki/tests/core/test_managers.py
2025-09-17 07:52:16 -05:00

82 lines
2.9 KiB
Python

"""
Tests that the custom queryset methods work, this is important
because the pattern of building them is different from Django
1.5 to 1.6 to 1.7 so there will be 3 patterns in play at the
same time.
"""
from wiki.models import Article
from wiki.models import URLPath
from wiki.plugins.attachments.models import Attachment
from ..base import ArticleTestBase
class ArticleManagerTests(ArticleTestBase):
def test_queryset_methods_directly_on_manager(self):
self.assertEqual(Article.objects.can_read(self.superuser1).count(), 1)
self.assertEqual(Article.objects.can_write(self.superuser1).count(), 1)
self.assertEqual(Article.objects.active().count(), 1)
def test_mass_deletion(self):
"""
https://github.com/django-wiki/django-wiki/issues/857
"""
Article.objects.all().delete()
self.assertEqual(Article.objects.all().count(), 0)
def test_queryset_methods_on_querysets(self):
self.assertEqual(
Article.objects.all().can_read(self.superuser1).count(), 1
)
self.assertEqual(
Article.objects.all().can_write(self.superuser1).count(), 1
)
self.assertEqual(Article.objects.all().active().count(), 1)
# See: https://code.djangoproject.com/ticket/22817
def test_queryset_empty_querysets(self):
self.assertEqual(
Article.objects.none().can_read(self.superuser1).count(), 0
)
self.assertEqual(
Article.objects.none().can_write(self.superuser1).count(), 0
)
self.assertEqual(Article.objects.none().active().count(), 0)
class AttachmentManagerTests(ArticleTestBase):
def test_queryset_methods_directly_on_manager(self):
# Do the same for Attachment which uses ArtickeFkManager
self.assertEqual(
Attachment.objects.can_read(self.superuser1).count(), 0
)
self.assertEqual(
Attachment.objects.can_write(self.superuser1).count(), 0
)
self.assertEqual(Attachment.objects.active().count(), 0)
def test_queryset_methods_on_querysets(self):
self.assertEqual(
Attachment.objects.all().can_read(self.superuser1).count(), 0
)
self.assertEqual(
Attachment.objects.all().can_write(self.superuser1).count(), 0
)
self.assertEqual(Attachment.objects.all().active().count(), 0)
# See: https://code.djangoproject.com/ticket/22817
def test_queryset_empty_query_sets(self):
self.assertEqual(
Attachment.objects.none().can_read(self.superuser1).count(), 0
)
self.assertEqual(
Attachment.objects.none().can_write(self.superuser1).count(), 0
)
self.assertEqual(Attachment.objects.none().active().count(), 0)
class URLPathManagerTests(ArticleTestBase):
def test_related_manager_works_with_filters(self):
root = URLPath.root()
self.assertNotIn(root.id, [p.id for p in root.children.active()])