test_events.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from unittest.mock import Mock
  2. from django.test import TestCase
  3. from django.utils import timezone
  4. from misago.acl import useracl
  5. from misago.acl.objectacl import add_acl_to_obj
  6. from misago.categories.models import Category
  7. from misago.conftest import get_cache_versions
  8. from misago.threads.events import record_event
  9. from misago.threads.models import Thread
  10. from misago.users.testutils import create_test_user
  11. cache_versions = get_cache_versions()
  12. class EventsApiTests(TestCase):
  13. def setUp(self):
  14. self.user = create_test_user("User", "user@example.com")
  15. datetime = timezone.now()
  16. self.category = Category.objects.all_categories()[:1][0]
  17. self.thread = Thread(
  18. category=self.category,
  19. started_on=datetime,
  20. starter_name="Tester",
  21. starter_slug="tester",
  22. last_post_on=datetime,
  23. last_poster_name="Tester",
  24. last_poster_slug="tester",
  25. )
  26. self.thread.set_title("Test thread")
  27. self.thread.save()
  28. user_acl = useracl.get_user_acl(self.user, cache_versions)
  29. add_acl_to_obj(user_acl, self.category)
  30. add_acl_to_obj(user_acl, self.thread)
  31. def test_record_event_with_context(self):
  32. """record_event registers event with context in thread"""
  33. request = Mock(user=self.user, user_ip="123.14.15.222")
  34. context = {"user": "Lorem ipsum"}
  35. event = record_event(request, self.thread, "announcement", context)
  36. event_post = self.thread.post_set.order_by("-id")[:1][0]
  37. self.assertEqual(self.thread.last_post, event_post)
  38. self.assertTrue(self.thread.has_events)
  39. self.assertTrue(self.thread.last_post_is_event)
  40. self.assertEqual(event.pk, event_post.pk)
  41. self.assertTrue(event_post.is_event)
  42. self.assertEqual(event_post.event_type, "announcement")
  43. self.assertEqual(event_post.event_context, context)
  44. self.assertEqual(event_post.poster_id, request.user.pk)
  45. def test_record_event_is_read(self):
  46. """record_event makes recorded event read to its author"""
  47. request = Mock(user=self.user, user_ip="123.14.15.222")
  48. event = record_event(request, self.thread, "announcement")
  49. self.user.postread_set.get(
  50. category=self.category, thread=self.thread, post=event
  51. )