test_activepostersranking.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from django.contrib.auth import get_user_model
  2. from misago.categories.models import Category
  3. from misago.core import threadstore
  4. from misago.core.cache import cache
  5. from misago.threads.testutils import post_thread
  6. from misago.users.testutils import AuthenticatedUserTestCase
  7. from misago.users.activepostersranking import (
  8. get_active_posters_ranking, build_active_posters_ranking)
  9. class TestActivePostersRanking(AuthenticatedUserTestCase):
  10. def setUp(self):
  11. super(TestActivePostersRanking, self).setUp()
  12. cache.clear()
  13. threadstore.clear()
  14. self.category = Category.objects.all_categories()[:1][0]
  15. def tearDown(self):
  16. super(TestActivePostersRanking, self).tearDown()
  17. cache.clear()
  18. threadstore.clear()
  19. def test_get_active_posters_ranking(self):
  20. """get_active_posters_ranking returns list of active posters"""
  21. # no posts, empty tanking
  22. empty_ranking = get_active_posters_ranking()
  23. self.assertEqual(empty_ranking['users'], [])
  24. self.assertEqual(empty_ranking['users_count'], 0)
  25. # other user
  26. User = get_user_model()
  27. other_user = User.objects.create_user(
  28. "OtherUser", "other@user.com", "pass123")
  29. other_user.posts = 1
  30. other_user.save()
  31. post_thread(self.category, poster=other_user)
  32. build_active_posters_ranking()
  33. ranking = get_active_posters_ranking()
  34. self.assertEqual(ranking['users'], [other_user])
  35. self.assertEqual(ranking['users_count'], 1)
  36. # two users in ranking
  37. post_thread(self.category, poster=self.user)
  38. post_thread(self.category, poster=self.user)
  39. self.user.posts = 2
  40. self.user.save()
  41. build_active_posters_ranking()
  42. ranking = get_active_posters_ranking()
  43. self.assertEqual(ranking['users'], [self.user, other_user])
  44. self.assertEqual(ranking['users_count'], 2)
  45. self.assertEqual(ranking['users'][0].score, 2)
  46. self.assertEqual(ranking['users'][1].score, 1)