test_threads_moderation.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. from misago.forums.models import Forum
  2. from misago.users.testutils import AuthenticatedUserTestCase
  3. from misago.threads import moderation, testutils
  4. from misago.threads.models import Thread, Post, Event
  5. class ThreadsModerationTests(AuthenticatedUserTestCase):
  6. def setUp(self):
  7. super(ThreadsModerationTests, self).setUp()
  8. self.forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  9. self.thread = testutils.post_thread(self.forum)
  10. def reload_thread(self):
  11. self.thread = Thread.objects.get(pk=self.thread.pk)
  12. def test_announce_thread(self):
  13. """announce_thread makes thread announcement"""
  14. self.assertEqual(self.thread.weight, 0)
  15. self.assertTrue(moderation.announce_thread(self.user, self.thread))
  16. self.reload_thread()
  17. self.assertEqual(self.thread.weight, 2)
  18. self.assertTrue(self.thread.has_events)
  19. event = self.thread.event_set.last()
  20. self.assertEqual(event.icon, "star")
  21. self.assertIn("changed thread to announcement.", event.message)
  22. def test_announce_invalid_thread(self):
  23. """announce_thread returns false for already announced thread"""
  24. self.thread.weight = 2
  25. self.assertFalse(moderation.announce_thread(self.user, self.thread))
  26. self.assertEqual(self.thread.weight, 2)
  27. def test_pin_thread(self):
  28. """pin_thread makes thread pinned"""
  29. self.assertEqual(self.thread.weight, 0)
  30. self.assertTrue(moderation.pin_thread(self.user, self.thread))
  31. self.reload_thread()
  32. self.assertEqual(self.thread.weight, 1)
  33. self.assertTrue(self.thread.has_events)
  34. event = self.thread.event_set.last()
  35. self.assertEqual(event.icon, "bookmark")
  36. self.assertIn("pinned thread.", event.message)
  37. def test_pin_invalid_thread(self):
  38. """pin_thread returns false for already pinned thread"""
  39. self.thread.weight = 1
  40. self.assertFalse(moderation.pin_thread(self.user, self.thread))
  41. self.assertEqual(self.thread.weight, 1)
  42. def test_reset_thread(self):
  43. """reset_thread defaults thread weight"""
  44. moderation.pin_thread(self.user, self.thread)
  45. self.assertEqual(self.thread.weight, 1)
  46. self.assertTrue(moderation.reset_thread(self.user, self.thread))
  47. self.reload_thread()
  48. self.assertEqual(self.thread.weight, 0)
  49. self.assertTrue(self.thread.has_events)
  50. event = self.thread.event_set.last()
  51. self.assertIn("unpinned thread.", event.message)
  52. self.assertEqual(event.icon, "circle")
  53. def test_reset_invalid_thread(self):
  54. """reset_thread returns false for already default thread"""
  55. self.assertFalse(moderation.reset_thread(self.user, self.thread))
  56. self.assertEqual(self.thread.weight, 0)
  57. def test_close_thread(self):
  58. """close_thread closes thread"""
  59. self.assertFalse(self.thread.is_closed)
  60. self.assertTrue(moderation.close_thread(self.user, self.thread))
  61. self.reload_thread()
  62. self.assertTrue(self.thread.is_closed)
  63. self.assertTrue(self.thread.has_events)
  64. event = self.thread.event_set.last()
  65. self.assertIn("closed thread.", event.message)
  66. self.assertEqual(event.icon, "lock")
  67. def test_close_invalid_thread(self):
  68. """close_thread fails gracefully for opened thread"""
  69. moderation.close_thread(self.user, self.thread)
  70. self.reload_thread()
  71. self.assertTrue(self.thread.is_closed)
  72. self.assertFalse(moderation.close_thread(self.user, self.thread))
  73. def test_open_thread(self):
  74. """open_thread closes thread"""
  75. moderation.close_thread(self.user, self.thread)
  76. self.reload_thread()
  77. self.assertTrue(self.thread.is_closed)
  78. self.assertTrue(moderation.open_thread(self.user, self.thread))
  79. self.reload_thread()
  80. self.assertFalse(self.thread.is_closed)
  81. self.assertTrue(self.thread.has_events)
  82. event = self.thread.event_set.last()
  83. self.assertIn("opened thread.", event.message)
  84. self.assertEqual(event.icon, "unlock-alt")
  85. def test_open_invalid_thread(self):
  86. """open_thread fails gracefully for opened thread"""
  87. self.assertFalse(self.thread.is_closed)
  88. self.assertFalse(moderation.open_thread(self.user, self.thread))