1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- from django.contrib.auth import get_user_model
- from misago.core import threadstore
- from misago.core.cache import cache
- from misago.forums.models import Forum
- from misago.threads.testutils import post_thread
- from misago.users.testutils import AuthenticatedUserTestCase
- from misago.users.activepostersranking import (get_active_posters_ranking,
- get_real_active_posts_ranking,
- clear_active_posters_ranking)
- class TestActivePostersRanking(AuthenticatedUserTestCase):
- def setUp(self):
- super(TestActivePostersRanking, self).setUp()
- cache.clear()
- threadstore.clear()
- self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
- def tearDown(self):
- super(TestActivePostersRanking, self).tearDown()
- cache.clear()
- threadstore.clear()
- def test_get_real_active_posts_ranking(self):
- """get_real_active_posts_ranking returns list of active posters"""
- # no posts, empty tanking
- empty_ranking = get_real_active_posts_ranking()
- self.assertEqual(empty_ranking['users'], [])
- self.assertEqual(empty_ranking['users_count'], 0)
- # other user
- User = get_user_model()
- other_user = User.objects.create_user(
- "OtherUser", "other@user.com", "pass123")
- other_user.posts = 1
- other_user.save()
- post_thread(self.forum, poster=other_user)
- ranking = get_real_active_posts_ranking()
- self.assertEqual(ranking['users'], [other_user])
- self.assertEqual(ranking['users_count'], 1)
- # two users in ranking
- post_thread(self.forum, poster=self.user)
- post_thread(self.forum, poster=self.user)
- self.user.posts = 2
- self.user.save()
- ranking = get_real_active_posts_ranking()
- self.assertEqual(ranking['users'], [self.user, other_user])
- self.assertEqual(ranking['users_count'], 2)
- self.assertEqual(ranking['users'][0].score, 2)
- self.assertEqual(ranking['users'][1].score, 1)
- def test_get_active_posters_ranking(self):
- """get_active_posters_ranking returns cached list of active posters"""
- ranking = get_active_posters_ranking()
- self.assertEqual(ranking['users'], [])
- self.assertEqual(ranking['users_count'], 0)
- # post something
- post_thread(self.forum, poster=self.user)
- post_thread(self.forum, poster=self.user)
- self.user.posts = 2
- self.user.save()
- # cache returns results
- ranking = get_active_posters_ranking()
- self.assertEqual(ranking['users'], [])
- self.assertEqual(ranking['users_count'], 0)
- # cache clear works
- clear_active_posters_ranking()
- ranking = get_active_posters_ranking()
- self.assertEqual(ranking['users'], [self.user])
- self.assertEqual(ranking['users_count'], 1)
|