test_activepostersranking.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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("OtherUser", "other@user.com", "pass123")
  28. post_thread(self.category, poster=other_user)
  29. build_active_posters_ranking()
  30. ranking = get_active_posters_ranking()
  31. self.assertEqual(ranking['users'], [other_user])
  32. self.assertEqual(ranking['users_count'], 1)
  33. # two users in ranking
  34. post_thread(self.category, poster=self.user)
  35. post_thread(self.category, poster=self.user)
  36. build_active_posters_ranking()
  37. ranking = get_active_posters_ranking()
  38. self.assertEqual(ranking['users'], [self.user, other_user])
  39. self.assertEqual(ranking['users_count'], 2)
  40. self.assertEqual(ranking['users'][0].score, 2)
  41. self.assertEqual(ranking['users'][1].score, 1)
  42. # disabled users are not ranked
  43. disabled = UserModel.objects.create_user("DisabledUser", "disabled@user.com", "pass123")
  44. disabled.is_active = False
  45. disabled.save()
  46. post_thread(self.category, poster=disabled)
  47. post_thread(self.category, poster=disabled)
  48. post_thread(self.category, poster=disabled)
  49. disabled.posts = 3
  50. disabled.save()
  51. build_active_posters_ranking()
  52. ranking = get_active_posters_ranking()
  53. self.assertEqual(ranking['users'], [self.user, other_user])
  54. self.assertEqual(ranking['users_count'], 2)
  55. self.assertEqual(ranking['users'][0].score, 2)
  56. self.assertEqual(ranking['users'][1].score, 1)