simplecodes / wtforms (http://wtforms.simplecodes.com/)
A flexible forms validation and rendering library for python web development.
Clone this repository (size: 480.8 KB): HTTPS / SSH
$ hg clone http://bitbucket.org/simplecodes/wtforms/
| commit 341: | 752afac2adce |
| parent 340: | 754666a39baa |
| branch: | default |
Make tests more robust to handle possible regression cases
Changed (Δ1.2 KB):
raw changeset »
tests/fields.py (12 lines added, 6 lines removed)
tests/form.py (21 lines added, 3 lines removed)
Up to file-list tests/fields.py:
| … | … | @@ -53,9 +53,8 @@ class LabelTest(TestCase): |
53 |
53 |
|
54 |
54 |
class FlagsTest(TestCase): |
55 |
55 |
def setUp(self): |
56 |
class F(Form): |
|
57 |
a = TextField(validators=[validators.required()]) |
|
58 |
|
|
56 |
t = TextField(validators=[validators.Required()]).bind(Form(), 'a') |
|
57 |
self.flags = t.flags |
|
59 |
58 |
|
60 |
59 |
def test_existing_values(self): |
61 |
60 |
self.assertEqual(self.flags.required, True) |
| … | … | @@ -64,6 +63,7 @@ class FlagsTest(TestCase): |
64 |
63 |
self.assert_('optional' not in self.flags) |
65 |
64 |
|
66 |
65 |
def test_assignment(self): |
66 |
self.assert_('optional' not in self.flags) |
|
67 |
67 |
self.flags.optional = True |
68 |
68 |
self.assertEqual(self.flags.optional, True) |
69 |
69 |
self.assert_('optional' in self.flags) |
| … | … | @@ -105,6 +105,9 @@ class SelectFieldTest(TestCase): |
105 |
105 |
form = self.F(DummyPostData(b=[u'2'])) |
106 |
106 |
self.assertEqual(form.b.data, 2) |
107 |
107 |
self.assert_(form.b.validate(form)) |
108 |
form = self.F(DummyPostData(b=[u'b'])) |
|
109 |
self.assertEqual(form.b.data, None) |
|
110 |
self.assert_(not form.b.validate(form)) |
|
108 |
111 |
|
109 |
112 |
def test_id_attribute(self): |
110 |
113 |
form = self.F(obj=AttrDict(b=AttrDict(id=1))) |
| … | … | @@ -124,7 +127,7 @@ class SelectMultipleFieldTest(TestCase): |
124 |
127 |
self.assertEqual(form.a.data, ['a']) |
125 |
128 |
self.assertEqual(form.b.data, [1, 3]) |
126 |
129 |
# Test for possible regression with null data |
127 |
form.a.data = None |
|
130 |
form.a.data = None |
|
128 |
131 |
self.assert_(form.validate()) |
129 |
132 |
self.assertEqual(list(form.a.iter_choices()), [(v, l, False) for v, l in form.a.choices]) |
130 |
133 |
|
| … | … | @@ -215,10 +218,12 @@ class IntegerFieldTest(TestCase): |
215 |
218 |
def test(self): |
216 |
219 |
form = self.F(DummyPostData(a=['v'], b=['-15'])) |
217 |
220 |
self.assertEqual(form.a.data, None) |
221 |
self.assertEqual(form.a.raw_data, 'v') |
|
218 |
222 |
self.assertEqual(form.a(), u"""<input id="a" name="a" type="text" value="v" />""") |
219 |
223 |
self.assertEqual(form.b.data, -15) |
220 |
224 |
self.assertEqual(form.b(), u"""<input id="b" name="b" type="text" value="-15" />""") |
221 |
self.assert_(not form. |
|
225 |
self.assert_(not form.a.validate(form)) |
|
226 |
self.assert_(form.b.validate(form)) |
|
222 |
227 |
form = self.F(DummyPostData(a=[], b=[''])) |
223 |
228 |
self.assertEqual(form.a.data, None) |
224 |
229 |
self.assertEqual(form.b.data, 48) |
| … | … | @@ -249,6 +254,7 @@ class DecimalFieldTest(TestCase): |
249 |
254 |
self.assertEqual(form.a._value(), u'3.141') |
250 |
255 |
form = F(a=3.14159265) |
251 |
256 |
self.assertEqual(form.a._value(), u'3.142') |
257 |
self.assert_(isinstance(form.a.data, float)) |
|
252 |
258 |
|
253 |
259 |
|
254 |
260 |
class BooleanFieldTest(TestCase): |
| … | … | @@ -380,7 +386,7 @@ class FormFieldTest(TestCase): |
380 |
386 |
|
381 |
387 |
|
382 |
388 |
class FieldListTest(TestCase): |
383 |
t = TextField(validators=[validators. |
|
389 |
t = TextField(validators=[validators.Required()]) |
|
384 |
390 |
|
385 |
391 |
def test_form(self): |
386 |
392 |
F = make_form(a = FieldList(self.t)) |
Up to file-list tests/form.py:
2 |
2 |
from unittest import TestCase |
3 |
3 |
|
4 |
4 |
from wtforms.form import BaseForm, Form |
5 |
from wtforms.fields import TextField |
|
5 |
from wtforms.fields import TextField, IntegerField |
|
6 |
6 |
from wtforms.validators import ValidationError |
7 |
7 |
|
8 |
8 |
|
| … | … | @@ -45,6 +45,21 @@ class BaseFormTest(TestCase): |
45 |
45 |
self.assertRaises(AttributeError, getattr, form, 'test') |
46 |
46 |
self.assert_('test' not in form) |
47 |
47 |
|
48 |
def test_field_adding(self): |
|
49 |
form = self.get_form() |
|
50 |
self.assertEqual(len(list(form)), 1) |
|
51 |
form['foo'] = TextField() |
|
52 |
self.assertEqual(len(list(form)), 2) |
|
53 |
form.process(DummyPostData(foo=[u'hello'])) |
|
54 |
self.assertEqual(form['foo'].data, u'hello') |
|
55 |
form['test'] = IntegerField() |
|
56 |
self.assert_(isinstance(form['test'], IntegerField)) |
|
57 |
self.assertEqual(len(list(form)), 2) |
|
58 |
self.assertRaises(AttributeError, getattr, form['test'], 'data') |
|
59 |
form.process(DummyPostData(test=[u'1'])) |
|
60 |
self.assertEqual(form['test'].data, 1) |
|
61 |
self.assertEqual(form['foo'].data, u'') |
|
62 |
||
48 |
63 |
def test_populate_obj(self): |
49 |
64 |
m = type('Model', (object, ), {}) |
50 |
65 |
form = self.get_form() |
| … | … | @@ -55,10 +70,12 @@ class BaseFormTest(TestCase): |
55 |
70 |
|
56 |
71 |
def test_prefixes(self): |
57 |
72 |
self.assertEqual(self.get_form(prefix='foo').test.name, 'foo-test') |
73 |
self.assertEqual(self.get_form(prefix='foo').test.short_name, 'test') |
|
58 |
74 |
self.assertEqual(self.get_form(prefix='foo').test.id, 'foo-test') |
59 |
form = self.get_form(prefix='foo') |
|
60 |
form.process(DummyPostData({'foo-test': [u'hello'], 'test': [u'bye']})) |
|
75 |
form = self.get_form(prefix='foo.') |
|
76 |
form.process(DummyPostData({'foo.test': [u'hello'], 'test': [u'bye']})) |
|
61 |
77 |
self.assertEqual(form.test.data, u'hello') |
78 |
self.assertEqual(self.get_form(prefix='foo[')['test'].name, 'foo[-test') |
|
62 |
79 |
|
63 |
80 |
|
64 |
81 |
class FormMetaTest(TestCase): |
| … | … | @@ -112,6 +129,7 @@ class FormTest(TestCase): |
112 |
129 |
del form.test |
113 |
130 |
self.assert_('test' not in form) |
114 |
131 |
self.assertEqual(form.test, None) |
132 |
self.assertEqual(len(list(form)), 0) |
|
115 |
133 |
|
116 |
134 |
def test_ordered_fields(self): |
117 |
135 |
class MyForm(Form): |
