test_banadmin_views.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. from datetime import date, datetime, timedelta
  2. from django.core.urlresolvers import reverse
  3. from misago.admin.testutils import AdminTestCase
  4. from ..models import Ban
  5. class BanAdminViewsTests(AdminTestCase):
  6. def test_link_registered(self):
  7. """admin nav contains bans link"""
  8. response = self.client.get(
  9. reverse('misago:admin:users:accounts:index'))
  10. response = self.client.get(response['location'])
  11. self.assertIn(reverse('misago:admin:users:bans:index'),
  12. response.content)
  13. def test_list_view(self):
  14. """bans list view returns 200"""
  15. response = self.client.get(reverse('misago:admin:users:bans:index'))
  16. self.assertEqual(response.status_code, 302)
  17. response = self.client.get(response['location'])
  18. self.assertEqual(response.status_code, 200)
  19. def test_mass_delete(self):
  20. """adminview deletes multiple bans"""
  21. test_date = datetime.now() + timedelta(days=180)
  22. for i in xrange(10):
  23. response = self.client.post(
  24. reverse('misago:admin:users:bans:new'),
  25. data={
  26. 'check_type': '1',
  27. 'banned_value': '%stest@test.com' % i,
  28. 'user_message': 'Lorem ipsum dolor met',
  29. 'staff_message': 'Sit amet elit',
  30. 'expires_on': test_date.isoformat(),
  31. })
  32. self.assertEqual(response.status_code, 302)
  33. self.assertEqual(Ban.objects.count(), 10)
  34. bans_pks = []
  35. for ban in Ban.objects.iterator():
  36. bans_pks.append(ban.pk)
  37. response = self.client.post(
  38. reverse('misago:admin:users:bans:index'),
  39. data={'action': 'delete', 'selected_items': bans_pks})
  40. self.assertEqual(response.status_code, 302)
  41. self.assertEqual(Ban.objects.count(), 0)
  42. def test_new_view(self):
  43. """new ban view has no showstoppers"""
  44. response = self.client.get(
  45. reverse('misago:admin:users:bans:new'))
  46. self.assertEqual(response.status_code, 200)
  47. test_date = datetime.now() + timedelta(days=180)
  48. response = self.client.post(
  49. reverse('misago:admin:users:bans:new'),
  50. data={
  51. 'check_type': '1',
  52. 'banned_value': 'test@test.com',
  53. 'user_message': 'Lorem ipsum dolor met',
  54. 'staff_message': 'Sit amet elit',
  55. 'expires_on': test_date.isoformat(),
  56. })
  57. self.assertEqual(response.status_code, 302)
  58. response = self.client.get(reverse('misago:admin:users:bans:index'))
  59. response = self.client.get(response['location'])
  60. self.assertEqual(response.status_code, 200)
  61. self.assertIn('test@test.com', response.content)
  62. def test_edit_view(self):
  63. """edit ban view has no showstoppers"""
  64. self.client.post(
  65. reverse('misago:admin:users:bans:new'),
  66. data={
  67. 'check_type': '0',
  68. 'banned_value': 'Admin',
  69. })
  70. test_ban = Ban.objects.get(banned_value='admin')
  71. response = self.client.post(
  72. reverse('misago:admin:users:bans:edit', kwargs={'pk': test_ban.pk}),
  73. data={
  74. 'check_type': '1',
  75. 'banned_value': 'test@test.com',
  76. 'user_message': 'Lorem ipsum dolor met',
  77. 'staff_message': 'Sit amet elit',
  78. 'expires_on': '',
  79. })
  80. self.assertEqual(response.status_code, 302)
  81. response = self.client.get(reverse('misago:admin:users:bans:index'))
  82. response = self.client.get(response['location'])
  83. self.assertEqual(response.status_code, 200)
  84. self.assertIn('test@test.com', response.content)
  85. def test_delete_view(self):
  86. """delete ban view has no showstoppers"""
  87. self.client.post(
  88. reverse('misago:admin:users:bans:new'),
  89. data={
  90. 'check_type': '0',
  91. 'banned_value': 'TestBan',
  92. })
  93. test_ban = Ban.objects.get(banned_value='testban')
  94. response = self.client.post(
  95. reverse('misago:admin:users:bans:delete', kwargs={
  96. 'pk': test_ban.pk
  97. }))
  98. self.assertEqual(response.status_code, 302)
  99. response = self.client.get(reverse('misago:admin:users:bans:index'))
  100. self.client.get(response['location'])
  101. response = self.client.get(response['location'])
  102. self.assertEqual(response.status_code, 200)
  103. self.assertTrue(test_ban.banned_value not in response.content)