test_activepostersranking.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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.activepostersranking import (
  7. build_active_posters_ranking, get_active_posters_ranking)
  8. from misago.users.testutils import AuthenticatedUserTestCase
  9. UserModel = get_user_model()
  10. class TestActivePostersRanking(AuthenticatedUserTestCase):
  11. def setUp(self):
  12. super(TestActivePostersRanking, self).setUp()
  13. cache.clear()
  14. threadstore.clear()
  15. self.category = Category.objects.get(slug='first-category')
  16. def tearDown(self):
  17. super(TestActivePostersRanking, self).tearDown()
  18. cache.clear()
  19. threadstore.clear()
  20. def test_get_active_posters_ranking(self):
  21. """get_active_posters_ranking returns list of active posters"""
  22. # no posts, empty tanking
  23. empty_ranking = get_active_posters_ranking()
  24. self.assertEqual(empty_ranking['users'], [])
  25. self.assertEqual(empty_ranking['users_count'], 0)
  26. # other user
  27. other_user = UserModel.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)
  47. # disabled users are not ranked
  48. disabled = UserModel.objects.create_user(
  49. "DisabledUser", "disabled@user.com", "pass123")
  50. disabled.is_active = False
  51. disabled.save()
  52. post_thread(self.category, poster=disabled)
  53. post_thread(self.category, poster=disabled)
  54. post_thread(self.category, poster=disabled)
  55. disabled.posts = 3
  56. disabled.save()
  57. build_active_posters_ranking()
  58. ranking = get_active_posters_ranking()
  59. self.assertEqual(ranking['users'], [self.user, other_user])
  60. self.assertEqual(ranking['users_count'], 2)
  61. self.assertEqual(ranking['users'][0].score, 2)
  62. self.assertEqual(ranking['users'][1].score, 1)