summaryrefslogtreecommitdiff
path: root/tests/admin_docs
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-11-21 08:48:29 +0100
committerClaude Paroz <claude@2xlibre.net>2013-11-21 22:50:59 +0100
commitd6cc37d601166200e72385401f4384f818a18cfd (patch)
treee78af8ec9c7640d92fdc2d17229d1b8bddda2f64 /tests/admin_docs
parent1718b5256cd65b8701e315e307c2eb2b5dd4c8d9 (diff)
Updated admindocs to use class-based views
Thanks Bouke Haarsma for the review.
Diffstat (limited to 'tests/admin_docs')
-rw-r--r--tests/admin_docs/tests.py86
-rw-r--r--tests/admin_docs/urls.py2
2 files changed, 82 insertions, 6 deletions
diff --git a/tests/admin_docs/tests.py b/tests/admin_docs/tests.py
index 3ae3a42843..d43205987e 100644
--- a/tests/admin_docs/tests.py
+++ b/tests/admin_docs/tests.py
@@ -1,17 +1,90 @@
import unittest
-try:
- import docutils
-except ImportError:
- docutils = None
-
from django.contrib.admindocs import utils
from django.contrib.auth.models import User
+from django.core.urlresolvers import reverse
from django.test import TestCase
from django.test.utils import override_settings
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
+@unittest.skipUnless(utils.docutils_is_available, "no docutils installed.")
+class AdminDocViewTests(TestCase):
+ fixtures = ['data.xml']
+ urls = 'admin_docs.urls'
+
+ def setUp(self):
+ self.client.login(username='super', password='secret')
+
+ def test_index(self):
+ self.client.logout()
+ response = self.client.get(reverse('django-admindocs-docroot'))
+ # Should display the login screen
+ self.assertContains(response,
+ '<input type="hidden" name="next" value="/admindocs/" />', html=True)
+ self.client.login(username='super', password='secret')
+ response = self.client.get(reverse('django-admindocs-docroot'))
+ self.assertContains(response, '<h1>Documentation</h1>', html=True)
+
+ def test_bookmarklets(self):
+ response = self.client.get(reverse('django-admindocs-bookmarklets'))
+ self.assertContains(response, 'http://testserver/admin/doc/views/')
+
+ def test_templatetag_index(self):
+ response = self.client.get(reverse('django-admindocs-tags'))
+ self.assertContains(response, '<h3 id="built_in-extends">extends</h3>', html=True)
+
+ def test_templatefilter_index(self):
+ response = self.client.get(reverse('django-admindocs-filters'))
+ self.assertContains(response, '<h3 id="built_in-first">first</h3>', html=True)
+
+ def test_view_index(self):
+ response = self.client.get(reverse('django-admindocs-views-index'))
+ self.assertContains(response,
+ '<h3><a href="/admindocs/views/django.contrib.admindocs.views.BaseAdminDocsView/">/admindocs/</a></h3>',
+ html=True)
+
+ def test_view_detail(self):
+ response = self.client.get(
+ reverse('django-admindocs-views-detail',
+ args=['django.contrib.admindocs.views.BaseAdminDocsView']))
+ # View docstring
+ self.assertContains(response, 'Base view for admindocs views.')
+
+ def test_model_index(self):
+ response = self.client.get(reverse('django-admindocs-models-index'))
+ self.assertContains(response, '<h2 id="app-auth">Auth</h2>', html=True)
+
+ def test_model_detail(self):
+ response = self.client.get(reverse('django-admindocs-models-detail',
+ args=['auth', 'user']))
+ # Check for attribute, many-to-many field
+ self.assertContains(response,
+ '<tr><td>email</td><td>Email address</td><td>email address</td></tr>', html=True)
+ self.assertContains(response,
+ '<tr><td>user_permissions.all</td><td>List</td><td>'
+ '<p>all related <a class="reference external" href="/admindocs/models/auth.permission/">'
+ 'auth.Permission</a> objects</p></td></tr>', html=True)
+
+ def test_template_detail(self):
+ response = self.client.get(reverse('django-admindocs-templates',
+ args=['admin_doc/template_detail.html']))
+ self.assertContains(response,
+ '<h1>Template: "admin_doc/template_detail.html"</h1>', html=True)
+
+ def test_missing_docutils(self):
+ utils.docutils_is_available = False
+ try:
+ response = self.client.get(reverse('django-admindocs-docroot'))
+ self.assertContains(response,
+ '<h3>The admin documentation system requires Python\'s '
+ '<a href="http://docutils.sf.net/">docutils</a> library.</h3>',
+ html=True)
+ finally:
+ utils.docutils_is_available = True
+
+
+@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
class XViewMiddlewareTest(TestCase):
fixtures = ['data.xml']
urls = 'admin_docs.urls'
@@ -53,7 +126,7 @@ class XViewMiddlewareTest(TestCase):
self.assertFalse('X-View' in response)
-@unittest.skipUnless(docutils, "no docutils installed.")
+@unittest.skipUnless(utils.docutils_is_available, "no docutils installed.")
class DefaultRoleTest(TestCase):
urls = 'admin_docs.urls'
@@ -81,6 +154,7 @@ class DefaultRoleTest(TestCase):
when ``publish_parts`` is used directly, by setting it to
``cmsreference``. See #6681.
"""
+ import docutils
self.assertNotEqual(docutils.parsers.rst.roles.DEFAULT_INTERPRETED_ROLE,
'cmsreference')
source = 'reST, `interpreted text`, default role.'
diff --git a/tests/admin_docs/urls.py b/tests/admin_docs/urls.py
index 08eaf03632..2dcd0315be 100644
--- a/tests/admin_docs/urls.py
+++ b/tests/admin_docs/urls.py
@@ -1,8 +1,10 @@
from django.conf.urls import include, patterns
+from django.contrib import admin
from . import views
urlpatterns = patterns('',
+ (r'^admin/', include(admin.site.urls)),
(r'^admindocs/', include('django.contrib.admindocs.urls')),
(r'^xview/func/$', views.xview_dec(views.xview)),
(r'^xview/class/$', views.xview_dec(views.XViewClass.as_view())),