test_activepostersranking.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. 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("DisabledUser", "disabled@user.com", "pass123")
  48. disabled.is_active = False
  49. disabled.save()
  50. post_thread(self.category, poster=disabled)
  51. post_thread(self.category, poster=disabled)
  52. post_thread(self.category, poster=disabled)
  53. disabled.posts = 3
  54. disabled.save()
  55. build_active_posters_ranking()
  56. ranking = get_active_posters_ranking()
  57. self.assertEqual(ranking['users'], [self.user, other_user])
  58. self.assertEqual(ranking['users_count'], 2)
  59. self.assertEqual(ranking['users'][0].score, 2)
  60. self.assertEqual(ranking['users'][1].score, 1)