test_views.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. 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. def test_get(self):
  19. """get request to list renders list"""
  20. response = self.client.get(self.view_link)
  21. self.assertEqual(response.status_code, 200)
  22. self.assertIn("have any notifications", response.content)
  23. self.notify_user()
  24. response = self.client.get(self.view_link)
  25. self.assertEqual(response.status_code, 200)
  26. self.assertIn("Test notify <strong>Bob</strong>", response.content)
  27. def test_post(self):
  28. """post request to list sets all notifications as read"""
  29. self.notify_user()
  30. response = self.client.post(self.view_link)
  31. self.assertEqual(response.status_code, 302)
  32. response = self.client.get(self.view_link)
  33. self.assertEqual(response.status_code, 200)
  34. self.reload_user()
  35. self.assertEqual(self.user.new_notifications, 0)
  36. def test_get_ajax(self):
  37. """get ajax to list renders list"""
  38. response = self.client.get(self.view_link, **self.ajax_header)
  39. self.assertEqual(response.status_code, 200)
  40. self.assertIn("have any new notifications", response.content)
  41. self.notify_user()
  42. response = self.client.get(self.view_link, **self.ajax_header)
  43. self.assertEqual(response.status_code, 200)
  44. self.assertIn("Test notify <strong>Bob</strong>", response.content)
  45. def test_post_ajax(self):
  46. """post ajax to list sets all notifications as read"""
  47. self.notify_user()
  48. response = self.client.post(self.view_link, **self.ajax_header)
  49. self.assertEqual(response.status_code, 200)
  50. response = self.client.get(self.view_link)
  51. self.assertEqual(response.status_code, 200)
  52. self.reload_user()
  53. self.assertEqual(self.user.new_notifications, 0)
  54. class AnonymousNotificationsViewsTests(UserTestCase):
  55. def setUp(self):
  56. self.view_link = reverse('misago:notifications')
  57. self.ajax_header = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
  58. super(AnonymousNotificationsViewsTests, self).setUp()
  59. def test_get(self):
  60. """get request to list returns 403 for guests"""
  61. response = self.client.get(self.view_link)
  62. self.assertEqual(response.status_code, 403)
  63. def test_post(self):
  64. """post request to list returns 403 for guests"""
  65. response = self.client.post(self.view_link)
  66. self.assertEqual(response.status_code, 403)
  67. def test_get_ajax(self):
  68. """get ajax request to list returns 403 for guests"""
  69. response = self.client.get(self.view_link, **self.ajax_header)
  70. self.assertEqual(response.status_code, 403)
  71. def test_post_ajax(self):
  72. """post ajax request to list returns 403 for guests"""
  73. response = self.client.post(self.view_link, **self.ajax_header)
  74. self.assertEqual(response.status_code, 403)