test_views.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from django.contrib.auth import get_user_model
  2. from django.core.urlresolvers import reverse
  3. from misago.users.testutils import UserTestCase, AuthenticatedUserTestCase
  4. from misago.notifications.api import notify_user
  5. class NotificationViewsTests(AuthenticatedUserTestCase):
  6. def setUp(self):
  7. self.view_link = reverse('misago:notifications')
  8. self.ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
  9. super(NotificationViewsTests, self).setUp()
  10. def notify_user(self):
  11. notification = notify_user(self.user,
  12. "Test notify %(token)s",
  13. "/users/",
  14. "test",
  15. {'token': 'Bob'},
  16. self.user)
  17. self.user = get_user_model().objects.get(id=self.user.id)
  18. return notification
  19. def test_list(self):
  20. """get request to list renders list"""
  21. response = self.client.get(self.view_link)
  22. self.assertEqual(response.status_code, 200)
  23. self.assertIn("have any notifications", response.content)
  24. self.notify_user()
  25. response = self.client.get(self.view_link)
  26. self.assertEqual(response.status_code, 200)
  27. self.assertIn("Test notify <strong>Bob</strong>", response.content)
  28. def test_list_ajax(self):
  29. """get ajax to list renders list"""
  30. response = self.client.get(self.view_link, **self.ajax_header)
  31. self.assertEqual(response.status_code, 200)
  32. self.assertIn("have any new notifications", response.content)
  33. self.notify_user()
  34. response = self.client.get(self.view_link, **self.ajax_header)
  35. self.assertEqual(response.status_code, 200)
  36. self.assertIn("Test notify <strong>Bob</strong>", response.content)
  37. def test_read_one(self):
  38. """read_notification POST reads one notification"""
  39. self.notify_user()
  40. notification = self.notify_user()
  41. self.notify_user()
  42. response = self.client.post(self.view_link, data={
  43. 'notification': notification.pk,
  44. })
  45. self.assertEqual(response.status_code, 302)
  46. response = self.client.get(self.view_link)
  47. self.assertEqual(response.status_code, 200)
  48. self.reload_user()
  49. self.assertEqual(self.user.new_notifications, 2)
  50. notification = self.user.misago_notifications.get(id=notification.pk)
  51. self.assertFalse(notification.is_new)
  52. def test_read_one_ajax(self):
  53. """read_notification ajax POST reads one notification"""
  54. self.notify_user()
  55. notification = self.notify_user()
  56. self.notify_user()
  57. response = self.client.post(self.view_link, data={
  58. 'notification': notification.pk,
  59. },**self.ajax_header)
  60. self.assertEqual(response.status_code, 200)
  61. response = self.client.get(self.view_link)
  62. self.assertEqual(response.status_code, 200)
  63. self.reload_user()
  64. self.assertEqual(self.user.new_notifications, 2)
  65. notification = self.user.misago_notifications.get(id=notification.pk)
  66. self.assertFalse(notification.is_new)
  67. def test_read_all(self):
  68. """read_all POST request to list sets all notifications as read"""
  69. self.notify_user()
  70. response = self.client.post(self.view_link, data={
  71. 'read-all': True,
  72. })
  73. self.assertEqual(response.status_code, 302)
  74. response = self.client.get(self.view_link)
  75. self.assertEqual(response.status_code, 200)
  76. self.reload_user()
  77. self.assertEqual(self.user.new_notifications, 0)
  78. def test_read_all_ajax(self):
  79. """real_all POST ajax to list sets all notifications as read"""
  80. self.notify_user()
  81. response = self.client.post(self.view_link, data={
  82. 'read-all': True,
  83. },**self.ajax_header)
  84. self.assertEqual(response.status_code, 200)
  85. response = self.client.get(self.view_link)
  86. self.assertEqual(response.status_code, 200)
  87. self.reload_user()
  88. self.assertEqual(self.user.new_notifications, 0)
  89. class AnonymousNotificationsViewsTests(UserTestCase):
  90. def setUp(self):
  91. self.view_link = reverse('misago:notifications')
  92. self.ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
  93. super(AnonymousNotificationsViewsTests, self).setUp()
  94. def test_get(self):
  95. """get request to list returns 403 for guests"""
  96. response = self.client.get(self.view_link)
  97. self.assertEqual(response.status_code, 403)
  98. def test_post(self):
  99. """post request to list returns 403 for guests"""
  100. response = self.client.post(self.view_link)
  101. self.assertEqual(response.status_code, 403)
  102. def test_get_ajax(self):
  103. """get ajax request to list returns 403 for guests"""
  104. response = self.client.get(self.view_link, **self.ajax_header)
  105. self.assertEqual(response.status_code, 403)
  106. def test_post_ajax(self):
  107. """post ajax request to list returns 403 for guests"""
  108. response = self.client.post(self.view_link, **self.ajax_header)
  109. self.assertEqual(response.status_code, 403)