diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-12-03 02:59:56 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-12-03 02:59:56 +0000 |
| commit | 07ddd56872e70e76e13eb0b118c7b6503d5d821f (patch) | |
| tree | e1e2eb0ab912b1b26246b4736ad114cc4541ad9c /tests/regressiontests | |
| parent | 79653a414857e4f93918051843afbc1f7c9a7f99 (diff) | |
queryset-refactor: Merged from trunk up to [6856].
git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@6857 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests')
| -rw-r--r-- | tests/regressiontests/cache/tests.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/forms/localflavor/za.py | 40 | ||||
| -rw-r--r-- | tests/regressiontests/forms/tests.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/i18n/tests.py | 15 | ||||
| -rw-r--r-- | tests/regressiontests/middleware/__init__.py | 0 | ||||
| -rw-r--r-- | tests/regressiontests/middleware/tests.py | 93 | ||||
| -rw-r--r-- | tests/regressiontests/middleware/urls.py | 7 | ||||
| -rw-r--r-- | tests/regressiontests/string_lookup/models.py | 8 | ||||
| -rw-r--r-- | tests/regressiontests/templates/context.py | 18 | ||||
| -rw-r--r-- | tests/regressiontests/templates/tests.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/templates/unicode.py | 10 | ||||
| -rw-r--r-- | tests/regressiontests/views/views.py | 2 |
12 files changed, 189 insertions, 10 deletions
diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py index e94ea33139..9ac2722b0a 100644 --- a/tests/regressiontests/cache/tests.py +++ b/tests/regressiontests/cache/tests.py @@ -72,6 +72,8 @@ class Cache(unittest.TestCase): 'function' : f, 'class' : C, } + cache.set("stuff", stuff) + self.assertEqual(cache.get("stuff"), stuff) def test_expiration(self): # expiration diff --git a/tests/regressiontests/forms/localflavor/za.py b/tests/regressiontests/forms/localflavor/za.py new file mode 100644 index 0000000000..a948964b8d --- /dev/null +++ b/tests/regressiontests/forms/localflavor/za.py @@ -0,0 +1,40 @@ +tests = r""" +# ZAIDField ################################################################# + +ZAIDField validates that the date is a valid birthdate and that the value +has a valid checksum. It allows spaces and dashes, and returns a plain +string of digits. +>>> from django.contrib.localflavor.za.forms import ZAIDField +>>> f = ZAIDField() +>>> f.clean('0002290001003') +'0002290001003' +>>> f.clean('000229 0001 003') +'0002290001003' +>>> f.clean('0102290001001') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid South African ID number'] +>>> f.clean('811208') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid South African ID number'] +>>> f.clean('0002290001004') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid South African ID number'] + +# ZAPostCodeField ########################################################### +>>> from django.contrib.localflavor.za.forms import ZAPostCodeField +>>> f = ZAPostCodeField() +>>> f.clean('abcd') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid South African postal code'] +>>> f.clean('0000') +u'0000' +>>> f.clean(' 7530') +Traceback (most recent call last): +... +ValidationError: [u'Enter a valid South African postal code'] + +""" diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index e646ce8f82..f8c5c486e4 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -21,6 +21,7 @@ from localflavor.pl import tests as localflavor_pl_tests from localflavor.sk import tests as localflavor_sk_tests from localflavor.uk import tests as localflavor_uk_tests from localflavor.us import tests as localflavor_us_tests +from localflavor.za import tests as localflavor_za_tests from regressions import tests as regression_tests from util import tests as util_tests from widgets import tests as widgets_tests @@ -48,6 +49,7 @@ __test__ = { 'localflavor_sk_tests': localflavor_sk_tests, 'localflavor_uk_tests': localflavor_uk_tests, 'localflavor_us_tests': localflavor_us_tests, + 'localflavor_za_tests': localflavor_za_tests, 'regression_tests': regression_tests, 'util_tests': util_tests, 'widgets_tests': widgets_tests, diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py index 2ffc62f90d..94e792cf54 100644 --- a/tests/regressiontests/i18n/tests.py +++ b/tests/regressiontests/i18n/tests.py @@ -43,7 +43,7 @@ u'django' Translating a string requiring no auto-escaping shouldn't change the "safe" status. ->>> from django.utils.safestring import mark_safe +>>> from django.utils.safestring import mark_safe, SafeString >>> s = mark_safe('Password') >>> type(s) <class 'django.utils.safestring.SafeString'> @@ -51,6 +51,19 @@ status. >>> type(ugettext(s)) <class 'django.utils.safestring.SafeUnicode'> >>> deactivate() + +>>> SafeString('a') + s +'aPassword' +>>> s + SafeString('a') +'Passworda' +>>> s + mark_safe('a') +'Passworda' +>>> mark_safe('a') + s +'aPassword' +>>> mark_safe('a') + mark_safe('s') +'as' +>>> print s +Password """ __test__ = { diff --git a/tests/regressiontests/middleware/__init__.py b/tests/regressiontests/middleware/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/regressiontests/middleware/__init__.py diff --git a/tests/regressiontests/middleware/tests.py b/tests/regressiontests/middleware/tests.py new file mode 100644 index 0000000000..cb5c29abe1 --- /dev/null +++ b/tests/regressiontests/middleware/tests.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- + +import unittest + +from django.test import TestCase +from django.http import HttpRequest +from django.middleware.common import CommonMiddleware +from django.conf import settings + +class CommonMiddlewareTest(TestCase): + def _get_request(self, path): + request = HttpRequest() + request.META = { + 'SERVER_NAME': 'testserver', + 'SERVER_PORT': 80, + } + request.path = "/middleware/%s" % path + return request + + def test_append_slash_have_slash(self): + """ + tests that urls with slashes go unmolested + """ + settings.APPEND_SLASH = True + request = self._get_request('slash/') + self.assertEquals(CommonMiddleware().process_request(request), None) + + def test_append_slash_slashless_resource(self): + """ + tests that matches to explicit slashless urls go unmolested + """ + settings.APPEND_SLASH = True + request = self._get_request('noslash') + self.assertEquals(CommonMiddleware().process_request(request), None) + + def test_append_slash_slashless_unknown(self): + """ + tests that APPEND_SLASH doesn't redirect to unknown resources + """ + settings.APPEND_SLASH = True + request = self._get_request('unknown') + self.assertEquals(CommonMiddleware().process_request(request), None) + + def test_append_slash_redirect(self): + """ + tests that APPEND_SLASH redirects slashless urls to a valid pattern + """ + settings.APPEND_SLASH = True + request = self._get_request('slash') + r = CommonMiddleware().process_request(request) + self.assertEquals(r.status_code, 301) + self.assertEquals(r['Location'], 'http://testserver/middleware/slash/') + + def test_append_slash_no_redirect_on_POST_in_DEBUG(self): + """ + tests that while in debug mode, an exception is raised with a warning + when a failed attempt is made to POST to an url which would normally be + redirected to a slashed version + """ + settings.APPEND_SLASH = True + settings.DEBUG = True + request = self._get_request('slash') + request.method = 'POST' + self.assertRaises( + RuntimeError, + CommonMiddleware().process_request, + request) + try: + CommonMiddleware().process_request(request) + except RuntimeError, e: + self.assertTrue('end in a slash' in str(e)) + + def test_append_slash_disabled(self): + """ + tests disabling append slash functionality + """ + settings.APPEND_SLASH = False + request = self._get_request('slash') + self.assertEquals(CommonMiddleware().process_request(request), None) + + def test_append_slash_quoted(self): + """ + tests that urls which require quoting are redirected to their slash + version ok + """ + settings.APPEND_SLASH = True + request = self._get_request('needsquoting#') + r = CommonMiddleware().process_request(request) + self.assertEquals(r.status_code, 301) + self.assertEquals( + r['Location'], + 'http://testserver/middleware/needsquoting%23/') + diff --git a/tests/regressiontests/middleware/urls.py b/tests/regressiontests/middleware/urls.py new file mode 100644 index 0000000000..88a4b37ddc --- /dev/null +++ b/tests/regressiontests/middleware/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls.defaults import patterns + +urlpatterns = patterns('', + (r'^noslash$', 'view'), + (r'^slash/$', 'view'), + (r'^needsquoting#/$', 'view'), +) diff --git a/tests/regressiontests/string_lookup/models.py b/tests/regressiontests/string_lookup/models.py index 12ebd0cf07..9deeb18763 100644 --- a/tests/regressiontests/string_lookup/models.py +++ b/tests/regressiontests/string_lookup/models.py @@ -18,26 +18,26 @@ class Bar(models.Model): return "Bar %s" % self.place.name class Whiz(models.Model): - name = models.CharField(max_length = 50) + name = models.CharField(max_length=50) def __unicode__(self): return "Whiz %s" % self.name class Child(models.Model): parent = models.OneToOneField('Base') - name = models.CharField(max_length = 50) + name = models.CharField(max_length=50) def __unicode__(self): return "Child %s" % self.name class Base(models.Model): - name = models.CharField(max_length = 50) + name = models.CharField(max_length=50) def __unicode__(self): return "Base %s" % self.name class Article(models.Model): - name = models.CharField(maxlength = 50) + name = models.CharField(max_length=50) text = models.TextField() def __str__(self): diff --git a/tests/regressiontests/templates/context.py b/tests/regressiontests/templates/context.py new file mode 100644 index 0000000000..d8b0f39abe --- /dev/null +++ b/tests/regressiontests/templates/context.py @@ -0,0 +1,18 @@ +# coding: utf-8 + +context_tests = r""" +>>> from django.template import Context +>>> c = Context({'a': 1, 'b': 'xyzzy'}) +>>> c['a'] +1 +>>> c.push() +{} +>>> c['a'] = 2 +>>> c['a'] +2 +>>> c.pop() +{'a': 2} +>>> c['a'] +1 +""" + diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index cbbd88b06c..846023afc9 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -18,11 +18,13 @@ from django.utils.safestring import mark_safe from django.utils.tzinfo import LocalTimezone from unicode import unicode_tests +from context import context_tests import filters # Some other tests we would like to run __test__ = { 'unicode': unicode_tests, + 'context': context_tests, } ################################# diff --git a/tests/regressiontests/templates/unicode.py b/tests/regressiontests/templates/unicode.py index efda11c2da..e5f308d202 100644 --- a/tests/regressiontests/templates/unicode.py +++ b/tests/regressiontests/templates/unicode.py @@ -3,6 +3,7 @@ unicode_tests = ur""" Templates can be created from unicode strings. >>> from django.template import * +>>> from django.utils.safestring import SafeData >>> t1 = Template(u'ŠĐĆŽćžšđ {{ var }}') Templates can also be created from bytestrings. These are assumed by encoded @@ -24,10 +25,13 @@ Contexts can be constructed from unicode or UTF-8 bytestrings. >>> c4 = Context({u'var': '\xc4\x90\xc4\x91'}) Since both templates and all four contexts represent the same thing, they all -render the same (and are returned as unicode objects). +render the same (and are returned as unicode objects and "safe" objects as +well, for auto-escaping purposes). >>> t1.render(c3) == t2.render(c3) True ->>> type(t1.render(c3)) -<type 'unicode'> +>>> isinstance(t1.render(c3), unicode) +True +>>> isinstance(t1.render(c3), SafeData) +True """ diff --git a/tests/regressiontests/views/views.py b/tests/regressiontests/views/views.py index 9e0bbb2d66..956432e7d5 100644 --- a/tests/regressiontests/views/views.py +++ b/tests/regressiontests/views/views.py @@ -1,7 +1,5 @@ from django.http import HttpResponse -from django.template import RequestContext def index_page(request): """Dummy index page""" return HttpResponse('<html><body>Dummy page</body></html>') - |
