test_views.py
47 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
neko259
|
r821 | import logging | ||
from django.core.urlresolvers import reverse, NoReverseMatch | ||||
from django.test import TestCase, Client | ||||
from boards import urls | ||||
logger = logging.getLogger(__name__) | ||||
HTTP_CODE_OK = 200 | ||||
neko259
|
r890 | EXCLUDED_VIEWS = { | ||
'banned', | ||||
neko259
|
r1088 | 'get_thread_diff', | ||
neko259
|
r890 | } | ||
neko259
|
r821 | |||
class ViewTest(TestCase): | ||||
def test_all_views(self): | ||||
""" | ||||
Try opening all views defined in ulrs.py that don't need additional | ||||
parameters | ||||
""" | ||||
client = Client() | ||||
for url in urls.urlpatterns: | ||||
try: | ||||
view_name = url.name | ||||
neko259
|
r890 | if view_name in EXCLUDED_VIEWS: | ||
logger.debug('View {} is excluded.'.format(view_name)) | ||||
continue | ||||
neko259
|
r821 | logger.debug('Testing view %s' % view_name) | ||
try: | ||||
response = client.get(reverse(view_name)) | ||||
self.assertEqual(HTTP_CODE_OK, response.status_code, | ||||
neko259
|
r890 | 'View not opened: {}'.format(view_name)) | ||
neko259
|
r821 | except NoReverseMatch: | ||
# This view just needs additional arguments | ||||
pass | ||||
except Exception as e: | ||||
self.fail('Got exception %s at %s view' % (e, view_name)) | ||||
except AttributeError: | ||||
# This is normal, some views do not have names | ||||
pass | ||||