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
James Crasta / crast
2 months ago

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
        self.flags = F().a.flags
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.validate())
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.required()])
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):