|
@@ -4,6 +4,7 @@ from django.contrib.auth import get_user_model
|
|
from django.test import TestCase
|
|
from django.test import TestCase
|
|
from django.utils import timezone
|
|
from django.utils import timezone
|
|
|
|
|
|
|
|
+from misago.acl.useracl import get_user_acl
|
|
from misago.categories.models import Category
|
|
from misago.categories.models import Category
|
|
from misago.conf import settings
|
|
from misago.conf import settings
|
|
from misago.core import cache, threadstore
|
|
from misago.core import cache, threadstore
|
|
@@ -11,8 +12,9 @@ from misago.readtracker import poststracker, categoriestracker
|
|
from misago.readtracker.models import PostRead
|
|
from misago.readtracker.models import PostRead
|
|
from misago.threads import testutils
|
|
from misago.threads import testutils
|
|
|
|
|
|
|
|
+User = get_user_model()
|
|
|
|
|
|
-UserModel = get_user_model()
|
|
|
|
|
|
+cache_versions = {"acl": "abcdefgh"}
|
|
|
|
|
|
|
|
|
|
class AnonymousUser(object):
|
|
class AnonymousUser(object):
|
|
@@ -25,21 +27,22 @@ class CategoriesTrackerTests(TestCase):
|
|
cache.cache.clear()
|
|
cache.cache.clear()
|
|
threadstore.clear()
|
|
threadstore.clear()
|
|
|
|
|
|
- self.user = UserModel.objects.create_user("UserA", "testa@user.com", 'Pass.123')
|
|
|
|
|
|
+ self.user = User.objects.create_user("UserA", "testa@user.com", 'Pass.123')
|
|
|
|
+ self.user_acl = get_user_acl(self.user, cache_versions)
|
|
self.category = Category.objects.get(slug='first-category')
|
|
self.category = Category.objects.get(slug='first-category')
|
|
|
|
|
|
def test_falsy_value(self):
|
|
def test_falsy_value(self):
|
|
"""passing falsy value to readtracker causes no errors"""
|
|
"""passing falsy value to readtracker causes no errors"""
|
|
- categoriestracker.make_read_aware(self.user, None)
|
|
|
|
- categoriestracker.make_read_aware(self.user, False)
|
|
|
|
- categoriestracker.make_read_aware(self.user, [])
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, None)
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, False)
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, [])
|
|
|
|
|
|
def test_anon_thread_before_cutoff(self):
|
|
def test_anon_thread_before_cutoff(self):
|
|
"""non-tracked thread is marked as read for anonymous users"""
|
|
"""non-tracked thread is marked as read for anonymous users"""
|
|
started_on = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
|
|
started_on = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
|
|
|
|
- categoriestracker.make_read_aware(AnonymousUser(), self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(AnonymousUser(), None, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -47,7 +50,7 @@ class CategoriesTrackerTests(TestCase):
|
|
"""tracked thread is marked as read for anonymous users"""
|
|
"""tracked thread is marked as read for anonymous users"""
|
|
testutils.post_thread(self.category, started_on=timezone.now())
|
|
testutils.post_thread(self.category, started_on=timezone.now())
|
|
|
|
|
|
- categoriestracker.make_read_aware(AnonymousUser(), self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(AnonymousUser(), None, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -56,7 +59,7 @@ class CategoriesTrackerTests(TestCase):
|
|
started_on = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
|
|
started_on = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -64,7 +67,7 @@ class CategoriesTrackerTests(TestCase):
|
|
"""tracked thread is marked as unread for authenticated users"""
|
|
"""tracked thread is marked as unread for authenticated users"""
|
|
testutils.post_thread(self.category, started_on=timezone.now())
|
|
testutils.post_thread(self.category, started_on=timezone.now())
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertTrue(self.category.is_new)
|
|
self.assertTrue(self.category.is_new)
|
|
|
|
|
|
@@ -73,7 +76,7 @@ class CategoriesTrackerTests(TestCase):
|
|
started_on = timezone.now() - timedelta(days=1)
|
|
started_on = timezone.now() - timedelta(days=1)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -83,7 +86,7 @@ class CategoriesTrackerTests(TestCase):
|
|
|
|
|
|
poststracker.save_read(self.user, thread.first_post)
|
|
poststracker.save_read(self.user, thread.first_post)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -94,7 +97,7 @@ class CategoriesTrackerTests(TestCase):
|
|
post = testutils.reply_thread(thread, posted_on=timezone.now())
|
|
post = testutils.reply_thread(thread, posted_on=timezone.now())
|
|
poststracker.save_read(self.user, post)
|
|
poststracker.save_read(self.user, post)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertTrue(self.category.is_new)
|
|
self.assertTrue(self.category.is_new)
|
|
|
|
|
|
@@ -105,7 +108,7 @@ class CategoriesTrackerTests(TestCase):
|
|
|
|
|
|
testutils.reply_thread(thread, posted_on=timezone.now(), is_event=True)
|
|
testutils.reply_thread(thread, posted_on=timezone.now(), is_event=True)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertTrue(self.category.is_new)
|
|
self.assertTrue(self.category.is_new)
|
|
|
|
|
|
@@ -120,7 +123,7 @@ class CategoriesTrackerTests(TestCase):
|
|
is_hidden=True,
|
|
is_hidden=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertTrue(self.category.is_new)
|
|
self.assertTrue(self.category.is_new)
|
|
|
|
|
|
@@ -136,7 +139,7 @@ class CategoriesTrackerTests(TestCase):
|
|
is_hidden=True,
|
|
is_hidden=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -145,7 +148,7 @@ class CategoriesTrackerTests(TestCase):
|
|
started_on = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
|
|
started_on = timezone.now() - timedelta(days=settings.MISAGO_READTRACKER_CUTOFF)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
testutils.post_thread(self.category, started_on=started_on)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -160,7 +163,7 @@ class CategoriesTrackerTests(TestCase):
|
|
is_unapproved=True,
|
|
is_unapproved=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -176,7 +179,7 @@ class CategoriesTrackerTests(TestCase):
|
|
is_unapproved=True,
|
|
is_unapproved=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertTrue(self.category.is_new)
|
|
self.assertTrue(self.category.is_new)
|
|
|
|
|
|
@@ -192,7 +195,7 @@ class CategoriesTrackerTests(TestCase):
|
|
is_unapproved=True,
|
|
is_unapproved=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertTrue(self.category.is_new)
|
|
self.assertTrue(self.category.is_new)
|
|
|
|
|
|
@@ -204,7 +207,7 @@ class CategoriesTrackerTests(TestCase):
|
|
is_unapproved=True,
|
|
is_unapproved=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|
|
|
|
|
|
@@ -217,7 +220,7 @@ class CategoriesTrackerTests(TestCase):
|
|
is_unapproved=True,
|
|
is_unapproved=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertFalse(self.category.is_read)
|
|
self.assertTrue(self.category.is_new)
|
|
self.assertTrue(self.category.is_new)
|
|
|
|
|
|
@@ -229,6 +232,6 @@ class CategoriesTrackerTests(TestCase):
|
|
is_hidden=True,
|
|
is_hidden=True,
|
|
)
|
|
)
|
|
|
|
|
|
- categoriestracker.make_read_aware(self.user, self.category)
|
|
|
|
|
|
+ categoriestracker.make_read_aware(self.user, self.user_acl, self.category)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertTrue(self.category.is_read)
|
|
self.assertFalse(self.category.is_new)
|
|
self.assertFalse(self.category.is_new)
|