Skip to content

Instantly share code, notes, and snippets.

@davebridges
Created September 7, 2012 13:48
Show Gist options
  • Save davebridges/3666404 to your computer and use it in GitHub Desktop.
Save davebridges/3666404 to your computer and use it in GitHub Desktop.
Sample View Tests for a Django App
"""This file contains tests for views."""
import datetime
from django.test import TestCase
from django.test.client import Client
from django.contrib.auth.models import User
from app.models import SampleModel
MODELS = [SampleModel]
class SampleModelViewTests(TestCase):
'''This class tests the views for :class:`~app.models.SampleModel` objects.'''
fixtures = ['test_data',]
def setUp(self):
"""Instantiate the test client. Creates a test user."""
self.client = Client()
self.test_user = User.objects.create_user('testuser', 'blah@blah.com', 'testpassword')
self.test_user.is_superuser = True
self.test_user.is_active = True
self.test_user.save()
self.assertEqual(self.test_user.is_superuser, True)
login = self.client.login(username='testuser', password='testpassword')
self.failUnless(login, 'Could not log in')
def tearDown(self):
"""Depopulate created model instances from test database."""
for model in MODELS:
for obj in model.objects.all():
obj.delete()
def test_samplemodel_list(self):
"""This tests the samplemodel-listview, ensuring that templates are loaded correctly.
This view uses a user with superuser permissions so does not test the permission levels for this view."""
test_response = self.client.get('/samplemodel/')
self.assertEqual(test_response.status_code, 200)
self.assertTrue('samplemodel_list' in test_response.context)
self.assertTemplateUsed(test_response, 'samplemodel_list.html')
self.assertEqual(test_response.context['samplemodel_list'][1].pk, 1)
self.assertEqual(test_response.context['samplemodel_list'][1].name, u'Sample Model Instance Name')
def test_samplemodel_view(self):
"""This tests the samplemodel-view view, ensuring that templates are loaded correctly.
This view uses a user with superuser permissions so does not test the permission levels for this view."""
test_response = self.client.get('/samplemodel/1/')
self.assertEqual(test_response.status_code, 200)
self.assertTrue('samplemodel' in test_response.context)
self.assertTemplateUsed(test_response, 'samplemodel_view.html')
self.assertEqual(test_response.context['samplemodel'].pk, 1)
self.assertEqual(test_response.context['samplemodel'].name, u'Sample Model Instance Name')
def test_samplemodel_view_create(self):
"""This tests the samplemodel-new view, ensuring that templates are loaded correctly.
This view uses a user with superuser permissions so does not test the permission levels for this view."""
test_response = self.client.get('/samplemodel/new/')
self.assertEqual(test_response.status_code, 200)
self.assertTemplateUsed(test_response, 'base.html')
self.assertTemplateUsed(test_response, 'samplemodel_form.html')
def test_samplemodel_view_edit(self):
"""This tests the samplemodel-edit view, ensuring that templates are loaded correctly.
This view uses a user with superuser permissions so does not test the permission levels for this view."""
test_response = self.client.get('/samplemodel/1/edit/')
self.assertEqual(test_response.status_code, 200)
self.assertTrue('samplemodel' in test_response.context)
self.assertTemplateUsed(test_response, 'samplemodel_form.html')
self.assertEqual(test_response.context['samplemodel'].pk, 1)
self.assertEqual(test_response.context['samplemodel'].name, u'Sample Model Instance Name')
#verifies that a non-existent object returns a 404 error presuming there is no object with pk=2.
null_response = self.client.get('/samplemodel/2/edit/')
self.assertEqual(null_response.status_code, 404)
def test_samplemodel_view_delete(self):
"""This tests the samplemodel-delete view, ensuring that templates are loaded correctly.
This view uses a user with superuser permissions so does not test the permission levels for this view."""
test_response = self.client.get('/samplemodel/1/delete/')
self.assertEqual(test_response.status_code, 200)
self.assertTrue('samplemodel' in test_response.context)
self.assertTemplateUsed(test_response, 'confirm_delete.html')
self.assertEqual(test_response.context['samplemodel'].pk, 1)
self.assertEqual(test_response.context['samplemodel'].name, u'Sample Model Instance Name')
#verifies that a non-existent object returns a 404 error.
null_response = self.client.get('/samplemodel/1/delete/')
self.assertEqual(null_response.status_code, 404)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment