summaryrefslogtreecommitdiff
path: root/tests/regressiontests/forms
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2007-09-15 21:21:37 +0000
committerAdrian Holovaty <adrian@holovaty.com>2007-09-15 21:21:37 +0000
commitfb6a0c8ffa1cd74c63aaf4b011665e5952d449e7 (patch)
tree4af2f7d6a2d1d91adf80243c67176effecf0c8b8 /tests/regressiontests/forms
parentc8f6e485b8b7329418ca030421b9bde4ec164854 (diff)
queryset-refactor: Merged to [6155]
git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@6332 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/forms')
-rw-r--r--tests/regressiontests/forms/localflavor.py290
-rw-r--r--tests/regressiontests/forms/tests.py43
-rw-r--r--tests/regressiontests/forms/util.py45
3 files changed, 370 insertions, 8 deletions
diff --git a/tests/regressiontests/forms/localflavor.py b/tests/regressiontests/forms/localflavor.py
index ae9ee14a92..01c6df8e76 100644
--- a/tests/regressiontests/forms/localflavor.py
+++ b/tests/regressiontests/forms/localflavor.py
@@ -1514,4 +1514,294 @@ ValidationError: [u'Enter a valid SoFi number']
>>> s = NLProvinceSelect()
>>> s.render('provinces', 'OV')
u'<select name="provinces">\n<option value="DR">Drente</option>\n<option value="FL">Flevoland</option>\n<option value="FR">Friesland</option>\n<option value="GL">Gelderland</option>\n<option value="GR">Groningen</option>\n<option value="LB">Limburg</option>\n<option value="NB">Noord-Brabant</option>\n<option value="NH">Noord-Holland</option>\n<option value="OV" selected="selected">Overijssel</option>\n<option value="UT">Utrecht</option>\n<option value="ZE">Zeeland</option>\n<option value="ZH">Zuid-Holland</option>\n</select>'
+
+# ARProvinceField #############################################################
+
+>>> from django.contrib.localflavor.ar.forms import ARProvinceSelect
+>>> f = ARProvinceSelect()
+>>> f.render('provincias', 'A')
+u'<select name="provincias">\n<option value="B">Buenos Aires</option>\n<option value="K">Catamarca</option>\n<option value="H">Chaco</option>\n<option value="U">Chubut</option>\n<option value="C">Ciudad Aut\xf3noma de Buenos Aires</option>\n<option value="X">C\xf3rdoba</option>\n<option value="W">Corrientes</option>\n<option value="E">Entre R\xedos</option>\n<option value="P">Formosa</option>\n<option value="Y">Jujuy</option>\n<option value="L">La Pampa</option>\n<option value="F">La Rioja</option>\n<option value="M">Mendoza</option>\n<option value="N">Misiones</option>\n<option value="Q">Neuqu\xe9n</option>\n<option value="R">R\xedo Negro</option>\n<option value="A" selected="selected">Salta</option>\n<option value="J">San Juan</option>\n<option value="D">San Luis</option>\n<option value="Z">Santa Cruz</option>\n<option value="S">Santa Fe</option>\n<option value="G">Santiago del Estero</option>\n<option value="V">Tierra del Fuego, Ant\xe1rtida e Islas del Atl\xe1ntico Sur</option>\n<option value="T">Tucum\xe1n</option>\n</select>'
+
+# ARPostalCodeField ###########################################################
+
+>>> from django.contrib.localflavor.ar.forms import ARPostalCodeField
+>>> f = ARPostalCodeField()
+>>> f.clean('5000')
+u'5000'
+>>> f.clean('C1064AAB')
+u'C1064AAB'
+>>> f.clean('c1064AAB')
+u'C1064AAB'
+>>> f.clean('C1064aab')
+u'C1064AAB'
+>>> f.clean(u'4400')
+u'4400'
+>>> f.clean(u'C1064AAB')
+u'C1064AAB'
+>>> f.clean('C1064AABB')
+Traceback (most recent call last):
+...
+ValidationError: [u'Ensure this value has at most 8 characters (it has 9).']
+>>> f.clean('C1064AA')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean('C106AAB')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean('106AAB')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean('500')
+Traceback (most recent call last):
+...
+ValidationError: [u'Ensure this value has at least 4 characters (it has 3).']
+>>> f.clean('5PPP')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean(u'')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f = ARPostalCodeField(required=False)
+>>> f.clean('5000')
+u'5000'
+>>> f.clean('C1064AAB')
+u'C1064AAB'
+>>> f.clean('c1064AAB')
+u'C1064AAB'
+>>> f.clean('C1064aab')
+u'C1064AAB'
+>>> f.clean(u'4400')
+u'4400'
+>>> f.clean(u'C1064AAB')
+u'C1064AAB'
+>>> f.clean('C1064AABB')
+Traceback (most recent call last):
+...
+ValidationError: [u'Ensure this value has at most 8 characters (it has 9).']
+>>> f.clean('C1064AA')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean('C106AAB')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean('106AAB')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean('500')
+Traceback (most recent call last):
+...
+ValidationError: [u'Ensure this value has at least 4 characters (it has 3).']
+>>> f.clean('5PPP')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format NNNN or ANNNNAAA.']
+>>> f.clean(None)
+u''
+>>> f.clean('')
+u''
+>>> f.clean(u'')
+u''
+
+# ARDNIField ##################################################################
+
+>>> from django.contrib.localflavor.ar.forms import ARDNIField
+>>> f = ARDNIField()
+>>> f.clean('20123456')
+u'20123456'
+>>> f.clean('20.123.456')
+u'20123456'
+>>> f.clean('9123456')
+u'9123456'
+>>> f.clean('9.123.456')
+u'9123456'
+>>> f.clean(u'20123456')
+u'20123456'
+>>> f.clean(u'20.123.456')
+u'20123456'
+>>> f.clean('20.123456')
+u'20123456'
+>>> f.clean('101234566')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field requires 7 or 8 digits.']
+>>> f.clean('W0123456')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field requires only numbers.']
+>>> f.clean('10,123,456')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field requires only numbers.']
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean(u'')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f = ARDNIField(required=False)
+>>> f.clean('20123456')
+u'20123456'
+>>> f.clean('20.123.456')
+u'20123456'
+>>> f.clean('9123456')
+u'9123456'
+>>> f.clean('9.123.456')
+u'9123456'
+>>> f.clean(u'20123456')
+u'20123456'
+>>> f.clean(u'20.123.456')
+u'20123456'
+>>> f.clean('20.123456')
+u'20123456'
+>>> f.clean('101234566')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field requires 7 or 8 digits.']
+>>> f.clean('W0123456')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field requires only numbers.']
+>>> f.clean('10,123,456')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field requires only numbers.']
+>>> f.clean(None)
+u''
+>>> f.clean('')
+u''
+>>> f.clean(u'')
+u''
+
+# ARCUITField #################################################################
+
+>>> from django.contrib.localflavor.ar.forms import ARCUITField
+>>> f = ARCUITField()
+>>> f.clean('20-10123456-9')
+u'20-10123456-9'
+>>> f.clean(u'20-10123456-9')
+u'20-10123456-9'
+>>> f.clean('27-10345678-4')
+u'27-10345678-4'
+>>> f.clean('20101234569')
+u'20-10123456-9'
+>>> f.clean('27103456784')
+u'27-10345678-4'
+>>> f.clean('2-10123456-9')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('210123456-9')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('20-10123456')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('20-10123456-')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('20-10123456-5')
+Traceback (most recent call last):
+...
+ValidationError: [u'Invalid CUIT.']
+>>> f.clean(u'2-10123456-9')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('27-10345678-1')
+Traceback (most recent call last):
+...
+ValidationError: [u'Invalid CUIT.']
+>>> f.clean(u'27-10345678-1')
+Traceback (most recent call last):
+...
+ValidationError: [u'Invalid CUIT.']
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+>>> f.clean(u'')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f = ARCUITField(required=False)
+>>> f.clean('20-10123456-9')
+u'20-10123456-9'
+>>> f.clean(u'20-10123456-9')
+u'20-10123456-9'
+>>> f.clean('27-10345678-4')
+u'27-10345678-4'
+>>> f.clean('20101234569')
+u'20-10123456-9'
+>>> f.clean('27103456784')
+u'27-10345678-4'
+>>> f.clean('2-10123456-9')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('210123456-9')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('20-10123456')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('20-10123456-')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('20-10123456-5')
+Traceback (most recent call last):
+...
+ValidationError: [u'Invalid CUIT.']
+>>> f.clean(u'2-10123456-9')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+>>> f.clean('27-10345678-1')
+Traceback (most recent call last):
+...
+ValidationError: [u'Invalid CUIT.']
+>>> f.clean(u'27-10345678-1')
+Traceback (most recent call last):
+...
+ValidationError: [u'Invalid CUIT.']
+>>> f.clean(None)
+u''
+>>> f.clean('')
+u''
+>>> f.clean(u'')
+u''
"""
diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py
index 0df3ee3858..b0a64a7854 100644
--- a/tests/regressiontests/forms/tests.py
+++ b/tests/regressiontests/forms/tests.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from localflavor import localflavor_tests
from regressions import regression_tests
+from util import util_tests
form_tests = r"""
>>> from django.newforms import *
@@ -1606,10 +1607,18 @@ ValidationError: [u'This field is required.']
Traceback (most recent call last):
...
ValidationError: [u'This field is required.']
+>>> f.clean('http://localhost')
+u'http://localhost'
>>> f.clean('http://example.com')
u'http://example.com'
>>> f.clean('http://www.example.com')
u'http://www.example.com'
+>>> f.clean('http://www.example.com:8000/test')
+u'http://www.example.com:8000/test'
+>>> f.clean('http://200.8.9.10')
+u'http://200.8.9.10'
+>>> f.clean('http://200.8.9.10:8000/test')
+u'http://200.8.9.10:8000/test'
>>> f.clean('foo')
Traceback (most recent call last):
...
@@ -3794,14 +3803,6 @@ u'1'
>>> smart_unicode('foo')
u'foo'
-# flatatt tests
->>> from django.newforms.util import flatatt
->>> flatatt({'id': "header"})
-u' id="header"'
->>> flatatt({'class': "news", 'title': "Read this"})
-u' class="news" title="Read this"'
->>> flatatt({})
-u''
####################################
# Test accessing errors in clean() #
@@ -3821,12 +3822,38 @@ u''
True
>>> f.cleaned_data['username']
u'sirrobin'
+
+#######################################
+# Test overriding ErrorList in a form #
+#######################################
+
+>>> from django.newforms.util import ErrorList
+>>> class DivErrorList(ErrorList):
+... def __unicode__(self):
+... return self.as_divs()
+... def as_divs(self):
+... if not self: return u''
+... return u'<div class="errorlist">%s</div>' % ''.join([u'<div class="error">%s</div>' % e for e in self])
+>>> class CommentForm(Form):
+... name = CharField(max_length=50, required=False)
+... email = EmailField()
+... comment = CharField()
+>>> data = dict(email='invalid')
+>>> f = CommentForm(data, auto_id=False, error_class=DivErrorList)
+>>> print f.as_p()
+<p>Name: <input type="text" name="name" maxlength="50" /></p>
+<div class="errorlist"><div class="error">Enter a valid e-mail address.</div></div>
+<p>Email: <input type="text" name="email" value="invalid" /></p>
+<div class="errorlist"><div class="error">This field is required.</div></div>
+<p>Comment: <input type="text" name="comment" /></p>
+
"""
__test__ = {
'form_tests': form_tests,
'localflavor': localflavor_tests,
'regressions': regression_tests,
+ 'util_tests': util_tests,
}
if __name__ == "__main__":
diff --git a/tests/regressiontests/forms/util.py b/tests/regressiontests/forms/util.py
new file mode 100644
index 0000000000..1a02b7e55b
--- /dev/null
+++ b/tests/regressiontests/forms/util.py
@@ -0,0 +1,45 @@
+# coding: utf-8
+"""
+Tests for newforms/util.py module.
+"""
+
+util_tests = r"""
+>>> from django.newforms.util import *
+>>> from django.utils.translation import ugettext_lazy
+
+###########
+# flatatt #
+###########
+
+>>> from django.newforms.util import flatatt
+>>> flatatt({'id': "header"})
+u' id="header"'
+>>> flatatt({'class': "news", 'title': "Read this"})
+u' class="news" title="Read this"'
+>>> flatatt({})
+u''
+
+###################
+# ValidationError #
+###################
+
+# Can take a string.
+>>> print ValidationError("There was an error.").messages
+<ul class="errorlist"><li>There was an error.</li></ul>
+
+# Can take a unicode string.
+>>> print ValidationError(u"Not \u03C0.").messages
+<ul class="errorlist"><li>Not π.</li></ul>
+
+# Can take a lazy string.
+>>> print ValidationError(ugettext_lazy("Error.")).messages
+<ul class="errorlist"><li>Error.</li></ul>
+
+# Can take a list.
+>>> print ValidationError(["Error one.", "Error two."]).messages
+<ul class="errorlist"><li>Error one.</li><li>Error two.</li></ul>
+
+# Can take a mixture in a list.
+>>> print ValidationError(["First error.", u"Not \u03C0.", ugettext_lazy("Error.")]).messages
+<ul class="errorlist"><li>First error.</li><li>Not π.</li><li>Error.</li></ul>
+"""