1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from datetime import timedelta
- from django.utils import timezone
- from ...conf.test import override_dynamic_settings
- from ...threads.test import reply_thread
- from ..activepostersranking import (
- build_active_posters_ranking,
- get_active_posters_ranking,
- )
- from ..models import ActivityRanking
- from ..test import create_test_user
- def test_ranking_is_emptied_if_no_users_exist(post):
- assert not build_active_posters_ranking()
- def test_ranking_is_emptied_if_no_posts_exist(user):
- assert not build_active_posters_ranking()
- @override_dynamic_settings(top_posters_ranking_length=5)
- def test_recent_post_by_user_counts_to_ranking(thread, user):
- reply_thread(thread, poster=user)
- assert build_active_posters_ranking()
- @override_dynamic_settings(top_posters_ranking_length=5)
- def test_recent_post_by_removed_user_doesnt_count_to_ranking(thread):
- reply_thread(thread)
- assert not build_active_posters_ranking()
- @override_dynamic_settings(top_posters_ranking_length=5)
- def test_old_post_by_user_doesnt_count_to_ranking(thread, user):
- reply_thread(thread, poster=user, posted_on=timezone.now() - timedelta(days=6))
- assert not build_active_posters_ranking()
- @override_dynamic_settings(top_posters_ranking_size=2)
- def test_ranking_size_is_limited(thread):
- for i in range(3):
- user = create_test_user("User%s" % i, "user%s@example.com" % i)
- reply_thread(thread, poster=user)
- assert len(build_active_posters_ranking()) == 2
- @override_dynamic_settings(top_posters_ranking_size=2)
- def test_old_ranking_is_removed_during_build(user):
- ActivityRanking.objects.create(user=user, score=1)
- build_active_posters_ranking()
- assert not ActivityRanking.objects.exists()
- def test_empty_ranking_is_returned_from_db(db):
- assert get_active_posters_ranking() == {"users": [], "users_count": 0}
- def test_ranking_is_returned_from_db(user):
- ActivityRanking.objects.create(user=user, score=1)
- assert get_active_posters_ranking() == {"users": [user], "users_count": 1}
- def test_ranked_user_is_annotated_with_score(user):
- ActivityRanking.objects.create(user=user, score=1)
- ranked_user = get_active_posters_ranking()["users"][0]
- assert ranked_user.score == 1
- def test_ranked_users_are_ordered_by_score(user, other_user):
- ActivityRanking.objects.create(user=user, score=1)
- ActivityRanking.objects.create(user=other_user, score=2)
- assert get_active_posters_ranking() == {
- "users": [other_user, user],
- "users_count": 2,
- }
|