tests.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from __future__ import unicode_literals
  2. from unittest import skipUnless
  3. try:
  4. from urllib.parse import urlparse
  5. except ImportError:
  6. from urlparse import urlparse
  7. from django.core.urlresolvers import reverse
  8. from mezzanine.blog.models import BlogPost
  9. from mezzanine.conf import settings
  10. from mezzanine.core.models import CONTENT_STATUS_PUBLISHED
  11. from mezzanine.pages.models import Page, RichTextPage
  12. from mezzanine.utils.tests import TestCase
  13. class BlogTests(TestCase):
  14. def test_blog_views(self):
  15. """
  16. Basic status code test for blog views.
  17. """
  18. response = self.client.get(reverse("blog_post_list"))
  19. self.assertEqual(response.status_code, 200)
  20. response = self.client.get(reverse("blog_post_feed", args=("rss",)))
  21. self.assertEqual(response.status_code, 200)
  22. response = self.client.get(reverse("blog_post_feed", args=("atom",)))
  23. self.assertEqual(response.status_code, 200)
  24. blog_post = BlogPost.objects.create(title="Post", user=self._user,
  25. status=CONTENT_STATUS_PUBLISHED)
  26. response = self.client.get(blog_post.get_absolute_url())
  27. self.assertEqual(response.status_code, 200)
  28. @skipUnless("mezzanine.accounts" in settings.INSTALLED_APPS and
  29. "mezzanine.pages" in settings.INSTALLED_APPS,
  30. "accounts and pages apps required")
  31. def test_login_protected_blog(self):
  32. """
  33. Test the blog is login protected if its page has login_required
  34. set to True.
  35. """
  36. slug = settings.BLOG_SLUG or "/"
  37. RichTextPage.objects.create(title="blog", slug=slug,
  38. login_required=True)
  39. response = self.client.get(reverse("blog_post_list"), follow=True)
  40. self.assertEqual(response.status_code, 200)
  41. self.assertTrue(len(response.redirect_chain) > 0)
  42. redirect_path = urlparse(response.redirect_chain[0][0]).path
  43. self.assertEqual(redirect_path, settings.LOGIN_URL)
  44. def test_blog_post_list_can_use_any_page_type(self):
  45. """Test that the blog post list can use any Page type."""
  46. slug = settings.BLOG_SLUG or "/"
  47. Page.objects.create(title="blog", slug=slug)
  48. response = self.client.get(reverse("blog_post_list"))
  49. self.assertEqual(response.status_code, 200)