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 build_active_posters_ranking, get_active_posters_ranking
  7. from misago.users.testutils import AuthenticatedUserTestCase
  8. UserModel = get_user_model()
  9. class TestActivePostersRanking(AuthenticatedUserTestCase):
  10. def setUp(self):
  11. super(TestActivePostersRanking, self).setUp()
  12. cache.clear()
  13. threadstore.clear()
  14. self.category = Category.objects.get(slug='first-category')
  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. other_user = UserModel.objects.create_user(
  27. "OtherUser", "other@user.com", "pass123")
  28. other_user.posts = 1
  29. other_user.save()
  30. post_thread(self.category, poster=other_user)
  31. build_active_posters_ranking()
  32. ranking = get_active_posters_ranking()
  33. self.assertEqual(ranking['users'], [other_user])
  34. self.assertEqual(ranking['users_count'], 1)
  35. # two users in ranking
  36. post_thread(self.category, poster=self.user)
  37. post_thread(self.category, poster=self.user)
  38. self.user.posts = 2
  39. self.user.save()
  40. build_active_posters_ranking()
  41. ranking = get_active_posters_ranking()
  42. self.assertEqual(ranking['users'], [self.user, other_user])
  43. self.assertEqual(ranking['users_count'], 2)
  44. self.assertEqual(ranking['users'][0].score, 2)
  45. self.assertEqual(ranking['users'][1].score, 1)
  46. # disabled users are not ranked
  47. disabled = UserModel.objects.create_user(
  48. "DisabledUser", "disabled@user.com", "pass123")
  49. disabled.is_active = False
  50. disabled.save()
  51. post_thread(self.category, poster=disabled)
  52. post_thread(self.category, poster=disabled)
  53. post_thread(self.category, poster=disabled)
  54. disabled.posts = 3
  55. disabled.save()
  56. build_active_posters_ranking()
  57. ranking = get_active_posters_ranking()
  58. self.assertEqual(ranking['users'], [self.user, other_user])
  59. self.assertEqual(ranking['users_count'], 2)
  60. self.assertEqual(ranking['users'][0].score, 2)
  61. self.assertEqual(ranking['users'][1].score, 1)