test_posts_moderation.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from misago.categories.models import Category
  2. from misago.users.testutils import AuthenticatedUserTestCase
  3. from .. import moderation, testutils
  4. from ..models import Post, Thread
  5. class PostsModerationTests(AuthenticatedUserTestCase):
  6. def setUp(self):
  7. super(PostsModerationTests, self).setUp()
  8. self.category = Category.objects.all_categories()[:1][0]
  9. self.thread = testutils.post_thread(self.category)
  10. self.post = testutils.reply_thread(self.thread)
  11. def reload_thread(self):
  12. self.thread = Thread.objects.get(pk=self.thread.pk)
  13. def reload_post(self):
  14. self.post = Post.objects.get(pk=self.post.pk)
  15. def test_hide_original_post(self):
  16. """hide_post fails for first post in thread"""
  17. with self.assertRaises(moderation.ModerationError):
  18. moderation.hide_post(self.user, self.thread.first_post)
  19. def test_protect_post(self):
  20. """protect_post protects post"""
  21. self.assertFalse(self.post.is_protected)
  22. self.assertTrue(moderation.protect_post(self.user, self.post))
  23. self.reload_post()
  24. self.assertTrue(self.post.is_protected)
  25. def test_protect_protected_post(self):
  26. """protect_post fails to protect protected post gracefully"""
  27. self.post.is_protected = True
  28. self.assertFalse(moderation.protect_post(self.user, self.post))
  29. def test_unprotect_post(self):
  30. """unprotect_post releases post protection"""
  31. self.post.is_protected = True
  32. self.assertTrue(moderation.unprotect_post(self.user, self.post))
  33. self.reload_post()
  34. self.assertFalse(self.post.is_protected)
  35. def test_unprotect_protected_post(self):
  36. """unprotect_post fails to unprotect unprotected post gracefully"""
  37. self.assertFalse(moderation.unprotect_post(self.user, self.post))
  38. def test_hide_post(self):
  39. """hide_post hides post"""
  40. self.assertFalse(self.post.is_hidden)
  41. self.assertTrue(moderation.hide_post(self.user, self.post))
  42. self.reload_post()
  43. self.assertTrue(self.post.is_hidden)
  44. self.assertEqual(self.post.hidden_by, self.user)
  45. self.assertEqual(self.post.hidden_by_name, self.user.username)
  46. self.assertEqual(self.post.hidden_by_slug, self.user.slug)
  47. self.assertIsNotNone(self.post.hidden_on)
  48. def test_hide_hidden_post(self):
  49. """hide_post fails to hide hidden post gracefully"""
  50. self.post.is_hidden = True
  51. self.assertFalse(moderation.hide_post(self.user, self.post))
  52. def test_unhide_original_post(self):
  53. """unhide_post fails for first post in thread"""
  54. with self.assertRaises(moderation.ModerationError):
  55. moderation.unhide_post(self.user, self.thread.first_post)
  56. def test_unhide_post(self):
  57. """unhide_post reveals post"""
  58. self.post.is_hidden = True
  59. self.assertTrue(self.post.is_hidden)
  60. self.assertTrue(moderation.unhide_post(self.user, self.post))
  61. self.reload_post()
  62. self.assertFalse(self.post.is_hidden)
  63. def test_unhide_visible_post(self):
  64. """unhide_post fails to reveal visible post gracefully"""
  65. self.assertFalse(moderation.unhide_post(self.user, self.post))
  66. def test_delete_original_post(self):
  67. """delete_post fails for first post in thread"""
  68. with self.assertRaises(moderation.ModerationError):
  69. moderation.delete_post(self.user, self.thread.first_post)
  70. def test_delete_post(self):
  71. """delete_post deletes thread post"""
  72. self.assertTrue(moderation.delete_post(self.user, self.post))
  73. with self.assertRaises(Post.DoesNotExist):
  74. self.reload_post()
  75. self.thread.synchronize()
  76. self.assertEqual(self.thread.replies, 0)