test_poststracker.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from datetime import timedelta
  2. import pytest
  3. from django.utils import timezone
  4. from ...conf.test import override_dynamic_settings
  5. from ..poststracker import make_read_aware, save_read
  6. def test_falsy_value_can_be_made_read_aware(request_mock):
  7. make_read_aware(request_mock, None)
  8. make_read_aware(request_mock, False)
  9. def test_empty_list_can_be_made_read_aware(request_mock):
  10. make_read_aware(request_mock, [])
  11. @pytest.fixture
  12. def read_post(user, post):
  13. save_read(user, post)
  14. return post
  15. def test_tracked_post_is_marked_as_not_read_and_new(request_mock, post):
  16. make_read_aware(request_mock, post)
  17. assert not post.is_read
  18. assert post.is_new
  19. @override_dynamic_settings(readtracker_cutoff=3)
  20. def test_not_tracked_post_is_marked_as_read_and_not_new(request_mock, post):
  21. post.posted_on = timezone.now() - timedelta(days=4)
  22. post.save()
  23. make_read_aware(request_mock, post)
  24. assert post.is_read
  25. assert not post.is_new
  26. def test_tracked_read_post_is_marked_as_read_and_not_new(request_mock, read_post):
  27. make_read_aware(request_mock, read_post)
  28. assert read_post.is_read
  29. assert not read_post.is_new
  30. @override_dynamic_settings(readtracker_cutoff=3)
  31. def test_not_tracked_read_post_is_marked_as_read_and_not_new(request_mock, read_post):
  32. read_post.posted_on = timezone.now() - timedelta(days=4)
  33. read_post.save()
  34. make_read_aware(request_mock, read_post)
  35. assert read_post.is_read
  36. assert not read_post.is_new
  37. def test_iterable_of_posts_can_be_made_read_aware(request_mock, post):
  38. make_read_aware(request_mock, [post])
  39. assert not post.is_read
  40. assert post.is_new
  41. def test_tracked_post_read_by_other_user_is_marked_as_not_read_and_new(
  42. request_mock, other_user, post
  43. ):
  44. save_read(other_user, post)
  45. make_read_aware(request_mock, post)
  46. assert not post.is_read
  47. assert post.is_new
  48. def test_tracked_post_is_marked_as_read_and_not_new_for_anonymous_user(
  49. anonymous_request_mock, post
  50. ):
  51. make_read_aware(anonymous_request_mock, post)
  52. assert post.is_read
  53. assert not post.is_new
  54. @override_dynamic_settings(readtracker_cutoff=3)
  55. def test_not_tracked_post_is_marked_as_read_and_not_new_for_anonymous_user(
  56. anonymous_request_mock, post
  57. ):
  58. post.posted_on = timezone.now() - timedelta(days=4)
  59. post.save()
  60. make_read_aware(anonymous_request_mock, post)
  61. assert post.is_read
  62. assert not post.is_new