test_activepostersranking.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from django.contrib.auth import get_user_model
  2. from misago.core import threadstore
  3. from misago.core.cache import cache
  4. from misago.forums.models import Forum
  5. from misago.threads.testutils import post_thread
  6. from misago.users.testutils import AuthenticatedUserTestCase
  7. from misago.users.activepostersranking import (get_active_posters_ranking,
  8. get_real_active_posts_ranking,
  9. clear_active_posters_ranking)
  10. class TestActivePostersRanking(AuthenticatedUserTestCase):
  11. def setUp(self):
  12. super(TestActivePostersRanking, self).setUp()
  13. cache.clear()
  14. threadstore.clear()
  15. self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  16. def tearDown(self):
  17. super(TestActivePostersRanking, self).tearDown()
  18. cache.clear()
  19. threadstore.clear()
  20. def test_get_real_active_posts_ranking(self):
  21. """get_real_active_posts_ranking returns list of active posters"""
  22. # no posts, empty tanking
  23. empty_ranking = get_real_active_posts_ranking()
  24. self.assertEqual(empty_ranking['users'], [])
  25. self.assertEqual(empty_ranking['users_count'], 0)
  26. # other user
  27. User = get_user_model()
  28. other_user = User.objects.create_user(
  29. "OtherUser", "other@user.com", "pass123")
  30. other_user.posts = 1
  31. other_user.save()
  32. post_thread(self.forum, poster=other_user)
  33. ranking = get_real_active_posts_ranking()
  34. self.assertEqual(ranking['users'], [other_user])
  35. self.assertEqual(ranking['users_count'], 1)
  36. # two users in ranking
  37. post_thread(self.forum, poster=self.user)
  38. post_thread(self.forum, poster=self.user)
  39. self.user.posts = 2
  40. self.user.save()
  41. ranking = get_real_active_posts_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. def test_get_active_posters_ranking(self):
  47. """get_active_posters_ranking returns cached list of active posters"""
  48. ranking = get_active_posters_ranking()
  49. self.assertEqual(ranking['users'], [])
  50. self.assertEqual(ranking['users_count'], 0)
  51. # post something
  52. post_thread(self.forum, poster=self.user)
  53. post_thread(self.forum, poster=self.user)
  54. self.user.posts = 2
  55. self.user.save()
  56. # cache returns results
  57. ranking = get_active_posters_ranking()
  58. self.assertEqual(ranking['users'], [])
  59. self.assertEqual(ranking['users_count'], 0)
  60. # cache clear works
  61. clear_active_posters_ranking()
  62. ranking = get_active_posters_ranking()
  63. self.assertEqual(ranking['users'], [self.user])
  64. self.assertEqual(ranking['users_count'], 1)