aboutsummaryrefslogtreecommitdiffstats
path: root/src/shorturls/tests/test_views.py
diff options
context:
space:
mode:
authorJacob Kaplan-Moss2009-04-12 16:25:05 -0500
committerJacob Kaplan-Moss2009-04-12 16:25:05 -0500
commitb5ee253b28673fcfad49f09d9d2687e86ed520b7 (patch)
tree32f3f5939bf8d69503f443573414ea80567d095e /src/shorturls/tests/test_views.py
parent4391a39ee4cde31ff9c9a56cd8d452b934136b4e (diff)
downloaddjango-shorturls-b5ee253b28673fcfad49f09d9d2687e86ed520b7.tar.bz2
Added a working shorturl redirect view, with tests.
Diffstat (limited to 'src/shorturls/tests/test_views.py')
-rw-r--r--src/shorturls/tests/test_views.py61
1 files changed, 59 insertions, 2 deletions
diff --git a/src/shorturls/tests/test_views.py b/src/shorturls/tests/test_views.py
index 8fa11a4..a2813f2 100644
--- a/src/shorturls/tests/test_views.py
+++ b/src/shorturls/tests/test_views.py
@@ -1,5 +1,62 @@
+from django.conf import settings
+from django.http import Http404
from django.test import TestCase
+from shorturls.baseconv import base62
class RedirectViewTestCase(TestCase):
- def test_this_is_working(self):
- self.assertEquals(1, 1) \ No newline at end of file
+ urls = 'shorturls.urls'
+ fixtures = ['shorturls-test-data.json']
+
+ def setUp(self):
+ self.old_shorten = getattr(settings, 'SHORTEN_MODELS', None)
+ self.old_base = getattr(settings, 'SHORTEN_FULL_BASE_URL', None)
+ settings.SHORTEN_MODELS = {
+ 'A': 'shorturls.animal',
+ 'V': 'shorturls.vegetable',
+ 'M': 'shorturls.mineral',
+ 'bad': 'not.amodel',
+ 'bad2': 'not.even.valid',
+ }
+ settings.SHORTEN_FULL_BASE_URL = 'http://example.com'
+
+ def tearDown(self):
+ if self.old_shorten is not None:
+ settings.SHORTEN_MODELS = self.old_shorten
+ if self.old_base is not None:
+ settings.SHORTEN_FULL_BASE_URL = self.old_base
+
+ def test_redirect(self):
+ """
+ Test the basic operation of a working redirect.
+ """
+ response = self.client.get('/A%s' % enc(12345))
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], 'http://example.com/animal/12345/')
+
+ def test_redirect_from_request(self):
+ """
+ Test a relative redirect when the Sites app isn't installed.
+ """
+ settings.SHORTEN_FULL_BASE_URL = None
+ response = self.client.get('/A%s' % enc(54321), HTTP_HOST='example.org')
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], 'http://example.org/animal/54321/')
+
+ def test_redirect_complete_url(self):
+ """
+ Test a redirect when the object returns a complete URL.
+ """
+ response = self.client.get('/V%s' % enc(785))
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(response['Location'], 'http://example.net/veggies/785')
+
+ def test_bad_short_urls(self):
+ self.assertEqual(404, self.client.get('/badabcd').status_code)
+ self.assertEqual(404, self.client.get('/bad2abcd').status_code)
+ self.assertEqual(404, self.client.get('/Vssssss').status_code)
+
+ def test_model_without_get_absolute_url(self):
+ self.assertEqual(404, self.client.get('/M%s' % enc(10101)).status_code)
+
+def enc(id):
+ return base62.from_decimal(id)