tests.py 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from django.core.management import call_command
  2. from django.utils import timezone, unittest
  3. from django.test.client import RequestFactory
  4. from misago.settings.models import Setting
  5. from misago.forums.models import Forum
  6. from misago.sessions.sessions import SessionMock
  7. from misago.threads.models import Thread, Post, Change, Checkpoint
  8. from misago.threads.testutils import create_thread, create_post
  9. from misago.users.models import User
  10. class DeleteThreadTestCase(unittest.TestCase):
  11. def setUp(self):
  12. call_command('loaddata', quiet=True)
  13. self.factory = RequestFactory()
  14. Post.objects.all().delete()
  15. Thread.objects.all().delete()
  16. User.objects.all().delete()
  17. self.user = User.objects.create_user('Neddart', 'ned@test.com', 'pass')
  18. self.user_alt = User.objects.create_user('Robert', 'rob@test.com', 'pass')
  19. self.forum = Forum.objects.get(id=1)
  20. self.thread = create_thread(self.forum)
  21. self.post = create_post(self.thread, self.user)
  22. def test_deletion_owned(self):
  23. """Check if user content delete results in correct deletion of thread"""
  24. # Assert that test has been correctly initialised
  25. self.assertEqual(Thread.objects.count(), 1)
  26. self.assertEqual(Post.objects.count(), 1)
  27. # Run test
  28. self.user.delete_content()
  29. self.assertEqual(Thread.objects.count(), 0)
  30. self.assertEqual(Post.objects.count(), 0)
  31. def test_deletion_other(self):
  32. """Check if user content delete results in correct deletion of post"""
  33. # Create second post
  34. self.post = create_post(self.thread, self.user_alt)
  35. # Assert that test has been correctly initialised
  36. self.assertEqual(Thread.objects.count(), 1)
  37. self.assertEqual(Post.objects.count(), 2)
  38. # Run test
  39. self.user_alt.delete_content()
  40. self.assertEqual(Thread.objects.count(), 1)
  41. self.assertEqual(Post.objects.count(), 1)
  42. def test_deletion_owned_other(self):
  43. """Check if user content delete results in correct deletion of thread and posts"""
  44. # Create second post
  45. self.post = create_post(self.thread, self.user_alt)
  46. # Assert that test has been correctly initialised
  47. self.assertEqual(Thread.objects.count(), 1)
  48. self.assertEqual(Post.objects.count(), 2)
  49. # Run test
  50. self.user.delete_content()
  51. self.assertEqual(Thread.objects.count(), 0)
  52. self.assertEqual(Post.objects.count(), 0)
  53. def test_deletion_checkpoints(self):
  54. """Check if user content delete results in correct update of thread checkpoints"""
  55. # Create an instance of a GET request.
  56. request = self.factory.get('/customer/details')
  57. request.session = SessionMock()
  58. request.user = self.user_alt
  59. request.META['HTTP_USER_AGENT'] = 'TestAgent'
  60. # Create second and third post
  61. self.post = create_post(self.thread, self.user)
  62. self.post_sec = create_post(self.thread, self.user_alt)
  63. self.post_sec.set_checkpoint(request, 'locked')
  64. self.post_sec.save(force_update=True)
  65. # Assert that test has been correctly initialised
  66. self.assertEqual(Thread.objects.count(), 1)
  67. self.assertEqual(Post.objects.count(), 3)
  68. # Run test
  69. self.user_alt.delete_content()
  70. self.assertEqual(Thread.objects.count(), 1)
  71. self.assertEqual(Post.objects.count(), 2)
  72. self.assertEqual(Checkpoint.objects.count(), 1)
  73. self.assertEqual(Post.objects.filter(checkpoints=True).count(), 1)
  74. self.assertEqual(Post.objects.get(id=self.post.pk).checkpoints, True)
  75. self.assertEqual(Post.objects.get(id=self.post.pk).checkpoint_set.count(), 1)