File: test_filters.py

package info (click to toggle)
wtforms 3.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,064 kB
  • sloc: python: 5,264; makefile: 27; sh: 17
file content (57 lines) | stat: -rw-r--r-- 1,352 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from tests.common import DummyPostData
from wtforms.fields import StringField
from wtforms.form import Form


class F(Form):
    a = StringField(default=" hello", filters=[lambda x: x.strip()])
    b = StringField(default="42", filters=[int, lambda x: -x])


def test_working():
    form = F()
    assert form.a.data == "hello"
    assert form.b.data == -42
    assert form.validate()


def test_failure():
    form = F(DummyPostData(a=["  foo bar  "], b=["hi"]))
    assert form.a.data == "foo bar"
    assert form.b.data == "hi"
    assert len(form.b.process_errors) == 1
    assert not form.validate()


def test_extra():
    class F(Form):
        a = StringField(default=" hello ")
        b = StringField(default="42")

    def filter_a(value):
        return value.strip()

    def filter_b(value):
        return -int(value)

    form = F(extra_filters={"a": [filter_a], "b": [filter_b]})
    assert "hello" == form.a.data
    assert -42 == form.b.data
    assert form.validate()


def test_inline():
    class F(Form):
        a = StringField(default=" hello ")
        b = StringField(default="42")

        def filter_a(self, value):
            return value.strip()

        def filter_b(self, value):
            return -int(value)

    form = F()
    assert "hello" == form.a.data
    assert -42 == form.b.data
    assert form.validate()