test_events.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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.categories.models import Category
  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.category = Category.objects.filter(role='forum')[: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. self.thread.set_title("Test thread")
  25. self.thread.save()
  26. add_acl(self.user, self.category)
  27. add_acl(self.user, self.thread)
  28. def test_record_event(self):
  29. """record_event registers event in thread"""
  30. message = "%(user)s has changed this thread to announcement."
  31. event = record_event(self.user, self.thread, "announcement", message, {
  32. 'user': (u"Łob", self.user.get_absolute_url())
  33. })
  34. self.assertTrue(event.is_valid)
  35. self.assertTrue(event.message.endswith(message[8:]))
  36. self.assertTrue(self.thread.has_events)
  37. def test_add_events_to_posts(self):
  38. """add_events_to_posts makes posts event-aware"""
  39. message = "Test event was recorded."
  40. for p in xrange(2):
  41. reply_thread(self.thread, posted_on=timezone.now())
  42. event = record_event(self.user, self.thread, "check", message)
  43. for p in xrange(2):
  44. reply_thread(self.thread, posted_on=timezone.now())
  45. posts = [p for p in self.thread.post_set.all().order_by('id')]
  46. add_events_to_posts(self.user, self.thread, posts)
  47. for i, post in enumerate(posts):
  48. if i == 1:
  49. self.assertEqual(post.events[0].message, message)
  50. else:
  51. self.assertEqual(post.events, [])