test_events.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #-*- coding: utf-8 -*-
  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
  6. from misago.forums.models import Forum
  7. from misago.threads.events import record_event, add_events_to_posts
  8. from misago.threads.models import Thread, Event
  9. from misago.threads.testutils import reply_thread
  10. class EventsAPITests(TestCase):
  11. def setUp(self):
  12. User = get_user_model()
  13. self.user = User.objects.create_user("Bob", "bob@bob.com", "Pass.123")
  14. datetime = timezone.now()
  15. self.forum = Forum.objects.filter(role="forum")[:1][0]
  16. self.thread = Thread(
  17. forum=self.forum,
  18. weight=0,
  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. self.thread.set_title("Test thread")
  26. self.thread.save()
  27. add_acl(self.user, self.forum)
  28. add_acl(self.user, self.thread)
  29. def test_record_event(self):
  30. """record_event registers event in thread"""
  31. message = "%(user)s has changed this thread to announcement."
  32. event = record_event(self.user, self.thread, "announcement", message, {
  33. 'user': (u"Łob", self.user.get_absolute_url())
  34. })
  35. self.assertTrue(event.is_valid)
  36. self.assertTrue(event.message.endswith(message[8:]))
  37. self.assertTrue(self.thread.has_events)
  38. def test_add_events_to_posts(self):
  39. """add_events_to_posts makes posts event-aware"""
  40. message = "Test event was recorded."
  41. for p in xrange(2):
  42. reply_thread(self.thread, posted_on=timezone.now())
  43. event = record_event(self.user, self.thread, "check", message)
  44. for p in xrange(2):
  45. reply_thread(self.thread, posted_on=timezone.now())
  46. posts = [p for p in self.thread.post_set.all().order_by('id')]
  47. add_events_to_posts(self.user, self.thread, posts)
  48. for i, post in enumerate(posts):
  49. if i == 1:
  50. self.assertEqual(post.events[0].message, message)
  51. else:
  52. self.assertEqual(post.events, [])