test_events.py 2.3 KB

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