test_newthreads_view.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from django.core.urlresolvers import reverse
  2. from django.utils.translation import ugettext as _
  3. from misago.forums.models import Forum
  4. from misago.users.testutils import UserTestCase, AuthenticatedUserTestCase
  5. from misago.threads import testutils
  6. class AuthenticatedTests(AuthenticatedUserTestCase):
  7. def test_empty_threads_list(self):
  8. """empty threads list is rendered"""
  9. response = self.client.get(reverse('misago:new_threads'))
  10. self.assertEqual(response.status_code, 200)
  11. self.assertIn("There are no threads from last", response.content)
  12. def test_single_page_threads_list(self):
  13. """filled threads list is rendered"""
  14. forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  15. threads = [testutils.post_thread(forum) for t in xrange(10)]
  16. response = self.client.get(reverse('misago:new_threads'))
  17. self.assertEqual(response.status_code, 200)
  18. for thread in threads:
  19. self.assertIn(thread.get_absolute_url(), response.content)
  20. # read half of threads
  21. for thread in threads[5:]:
  22. response = self.client.get(thread.get_absolute_url())
  23. # assert first half is no longer shown on list
  24. response = self.client.get(reverse('misago:new_threads'))
  25. for thread in threads[5:]:
  26. self.assertNotIn(thread.get_absolute_url(), response.content)
  27. for thread in threads[:5]:
  28. self.assertIn(thread.get_absolute_url(), response.content)
  29. # clear list
  30. response = self.client.post(reverse('misago:clear_new_threads'))
  31. self.assertEqual(response.status_code, 302)
  32. response = self.client.get(response['location'])
  33. self.assertEqual(response.status_code, 200)
  34. self.assertIn("There are no threads from last", response.content)
  35. def test_multipage_threads_list(self):
  36. """multipage threads list is rendered"""
  37. forum = Forum.objects.all_forums().filter(role="forum")[:1][0]
  38. threads = [testutils.post_thread(forum) for t in xrange(80)]
  39. response = self.client.get(reverse('misago:new_threads'))
  40. self.assertEqual(response.status_code, 200)
  41. response = self.client.get(reverse('misago:new_threads',
  42. kwargs={'page': 2}))
  43. self.assertEqual(response.status_code, 200)
  44. class AnonymousTests(UserTestCase):
  45. def test_anon_access_to_view(self):
  46. """anonymous user has no access to new threads list"""
  47. response = self.client.get(reverse('misago:new_threads'))
  48. self.assertEqual(response.status_code, 403)
  49. self.assertIn(
  50. _("You have to sign in to see your list of new threads."),
  51. response.content)