123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- from datetime import timedelta
- import pytest
- from django.utils import timezone
- from ...conf.test import override_dynamic_settings
- from ...threads.test import reply_thread
- from ..categoriestracker import make_read_aware
- from ..poststracker import save_read
- def remove_tracking(thread):
- thread.started_on = timezone.now() - timedelta(days=4)
- thread.save()
- thread.first_post.posted_on = thread.started_on
- thread.first_post.save()
- @pytest.fixture
- def read_thread(user, thread):
- save_read(user, thread.first_post)
- return thread
- def test_falsy_value_can_be_made_read_aware(request_mock):
- make_read_aware(request_mock, None)
- make_read_aware(request_mock, False)
- def test_empty_list_can_be_made_read_aware(request_mock):
- make_read_aware(request_mock, [])
- def test_empty_category_is_marked_as_read(request_mock, default_category):
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_tracked_post_is_marked_as_read(
- request_mock, post, default_category
- ):
- make_read_aware(request_mock, default_category)
- assert not default_category.is_read
- assert default_category.is_new
- def test_category_with_post_older_than_user_is_marked_as_read(
- request_mock, post, default_category
- ):
- post.posted_on = timezone.now() - timedelta(days=1)
- post.save()
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- @override_dynamic_settings(readtracker_cutoff=3)
- def test_category_with_post_older_than_cutoff_is_marked_as_read(
- request_mock, user, post, default_category
- ):
- user.joined_on = timezone.now() - timedelta(days=5)
- user.save()
- post.posted_on = timezone.now() - timedelta(days=4)
- post.save()
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_read_post_is_marked_as_read(
- request_mock, user, post, default_category
- ):
- save_read(user, post)
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_post_in_thread_older_than_user_is_marked_as_unread(
- request_mock, thread, default_category
- ):
- remove_tracking(thread)
- reply_thread(thread)
- make_read_aware(request_mock, default_category)
- assert not default_category.is_read
- assert default_category.is_new
- def test_category_with_post_in_invisible_thread_is_marked_as_read(
- request_mock, hidden_thread, default_category
- ):
- reply_thread(hidden_thread)
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_read_post_in_thread_older_than_user_is_marked_as_read(
- request_mock, user, thread, default_category
- ):
- remove_tracking(thread)
- post = reply_thread(thread)
- save_read(user, post)
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_read_post_in_read_thread_is_marked_as_read(
- request_mock, user, read_thread, default_category
- ):
- post = reply_thread(read_thread)
- save_read(user, post)
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_invisible_post_in_read_thread_is_marked_as_read(
- request_mock, user, read_thread, default_category
- ):
- reply_thread(read_thread, is_unapproved=True)
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_new_event_in_read_thread_is_marked_as_unread(
- request_mock, read_thread, default_category
- ):
- reply_thread(read_thread, is_event=True)
- make_read_aware(request_mock, default_category)
- assert not default_category.is_read
- assert default_category.is_new
- def test_category_with_hidden_event_in_read_thread_is_marked_as_read(
- request_mock, read_thread, default_category
- ):
- reply_thread(read_thread, is_hidden=True, is_event=True)
- make_read_aware(request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_hidden_event_visible_to_user_in_read_thread_is_marked_as_unread(
- request_mock, read_thread, default_category
- ):
- request_mock.user_acl["categories"][default_category.id]["can_hide_events"] = 1
- reply_thread(read_thread, is_hidden=True, is_event=True)
- make_read_aware(request_mock, default_category)
- assert not default_category.is_read
- assert default_category.is_new
- def test_empty_category_is_marked_as_read_for_anonymous_user(
- anonymous_request_mock, default_category
- ):
- make_read_aware(anonymous_request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- def test_category_with_tracked_thread_is_marked_as_read_for_anonymous_user(
- anonymous_request_mock, thread, default_category
- ):
- make_read_aware(anonymous_request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
- @override_dynamic_settings(readtracker_cutoff=3)
- def test_category_with_non_tracked_thread_is_marked_as_read_for_anonymous_user(
- anonymous_request_mock, thread, default_category
- ):
- remove_tracking(thread)
- make_read_aware(anonymous_request_mock, default_category)
- assert default_category.is_read
- assert not default_category.is_new
|