コード例 #1
0
ファイル: test_fields.py プロジェクト: yd5011/wtforms
 def test_basic(self):
     d = date(2008, 5, 7)
     form = self.F(DummyPostData(a=["2008-05-07"], b=["05/07", "2008"]))
     self.assertEqual(form.a.data, d)
     self.assertEqual(form.a._value(), "2008-05-07")
     self.assertEqual(form.b.data, d)
     self.assertEqual(form.b._value(), "05/07 2008")
コード例 #2
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
 def test_failure(self):
     form = self.F(DummyPostData(a=['2008-bb-cc'], b=['hi']))
     assert not form.validate()
     self.assertEqual(len(form.a.process_errors), 1)
     self.assertEqual(len(form.a.errors), 1)
     self.assertEqual(len(form.b.errors), 1)
     self.assertEqual(form.a.process_errors[0], 'Not a valid date value')
コード例 #3
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
    def test_enclosed_subform(self):
        make_inner = lambda: AttrDict(a=None)
        F = make_form(a=FieldList(
            FormField(make_form('FChild', a=self.t), default=make_inner)))
        data = [{'a': 'hello'}]
        form = F(a=data)
        self.assertEqual(form.a.data, data)
        self.assertTrue(form.validate())
        form.a.append_entry()
        self.assertEqual(form.a.data, data + [{'a': None}])
        self.assertFalse(form.validate())

        pdata = DummyPostData({
            'a-0': ['fake'],
            'a-0-a': ['foo'],
            'a-1-a': ['bar']
        })
        form = F(pdata, a=data)
        self.assertEqual(form.a.data, [{'a': 'foo'}, {'a': 'bar'}])

        inner_obj = make_inner()
        inner_list = [inner_obj]
        obj = AttrDict(a=inner_list)
        form.populate_obj(obj)
        self.assertTrue(obj.a is not inner_list)
        self.assertEqual(len(obj.a), 2)
        self.assertTrue(obj.a[0] is inner_obj)
        self.assertEqual(obj.a[0].a, 'foo')
        self.assertEqual(obj.a[1].a, 'bar')

        # Test failure on populate
        obj2 = AttrDict(a=42)
        self.assertRaises(TypeError, form.populate_obj, obj2)
コード例 #4
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
 def test_default_coerce(self):
     F = make_form(a=SelectField(choices=[('a', 'Foo')]))
     form = F(DummyPostData(a=[]))
     assert not form.validate()
     self.assertEqual(form.a.data, 'None')
     self.assertEqual(len(form.a.errors), 1)
     self.assertEqual(form.a.errors[0], 'Not a valid choice')
コード例 #5
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
    def test_file_field_without_file_input(self):
        class F(Form):
            file = FileField(widget=TextInput())

        f = F(DummyPostData(file=['test.txt']))
        self.assertEqual(f.file.data, 'test.txt')
        self.assertEqual(f.file(), '<input id="file" name="file" type="text">')
コード例 #6
0
ファイル: test_select.py プロジェクト: owgreen/wtforms
def test_validate_choices():
    F = make_form(a=SelectField(choices=[("a", "Foo")]))
    form = F(DummyPostData(a=["b"]))
    assert not form.validate()
    assert form.a.data == "b"
    assert len(form.a.errors) == 1
    assert form.a.errors[0] == "Not a valid choice."
コード例 #7
0
    def test_simple(self):
        b = self._build_value
        VALUES = (
            b('search', 'search', 'type="search"'),
            b('telephone', '123456789', 'type="tel"'),
            b('url', 'http://wtforms.simplecodes.com/', 'type="url"'),
            b('email', '*****@*****.**', 'type="email"'),
            b('datetime', '2013-09-05 00:23:42', 'type="datetime"', datetime(2013, 9, 5, 0, 23, 42)),
            b('date', '2013-09-05', 'type="date"', date(2013, 9, 5)),
            b('dt_local', '2013-09-05 00:23:42', 'type="datetime-local"', datetime(2013, 9, 5, 0, 23, 42)),
            b('integer', '42', '<input id="integer" name="integer" step="1" type="number" value="42">', 42),
            b('decimal', '43.5', '<input id="decimal" name="decimal" step="any" type="number" value="43.5">', Decimal('43.5')),
            b('int_range', '4', '<input id="int_range" name="int_range" step="1" type="range" value="4">', 4),
            b('decimal_range', '58', '<input id="decimal_range" name="decimal_range" step="any" type="range" value="58">', 58),
        )
        formdata = DummyPostData()
        kw = {}
        for item in VALUES:
            formdata[item['key']] = item['form_input']
            kw[item['key']] = item['data']

        form = self.F(formdata)
        for item in VALUES:
            field = form[item['key']]
            render_value = field()
            if render_value != item['expected_html']:
                tmpl = 'Field {key} render mismatch: {render_value!r} != {expected_html!r}'
                raise AssertionError(tmpl.format(render_value=render_value, **item))
            if field.data != item['data']:
                tmpl = 'Field {key} data mismatch: {field.data!r} != {data!r}'
                raise AssertionError(tmpl.format(field=field, **item))
コード例 #8
0
ファイル: test_csrf.py プロジェクト: xen/wtforms
 def test_basic_impl(self):
     form = self.F()
     assert "csrf_token" in form
     assert not form.validate()
     assert form.csrf_token._value() == "dummytoken"
     form = self.F(DummyPostData(csrf_token="dummytoken"))
     assert form.validate()
コード例 #9
0
def test_rendering():
    form = BoringForm(DummyPostData(bool2="x"))
    assert form.bool1(
    ) == '<input id="bool1" name="bool1" type="checkbox" value="y">'
    assert (form.bool2(
    ) == '<input checked id="bool2" name="bool2" type="checkbox" value="x">')
    assert form.bool2.raw_data == ["x"]
コード例 #10
0
def test_validate_choices_when_empty():
    F = make_form(a=SelectMultipleField(choices=[]))
    form = F(DummyPostData(a=["b"]))
    assert not form.validate()
    assert form.a.data == ["b"]
    assert len(form.a.errors) == 1
    assert form.a.errors[0] == "'b' is not a valid choice for this field."
コード例 #11
0
    def test_with_missing_token(self):
        post_data = DummyPostData(a='hi')
        form = InsecureForm(post_data, csrf_context='test')
        self.assertFalse(form.validate())

        self.assertEqual(form.csrf_token.data, '')
        self.assertEqual(form.csrf_token._value(), 'test')
コード例 #12
0
def test_enclosed_subform():
    def make_inner():
        return AttrDict(a=None)

    F = make_form(a=FieldList(FormField(make_form("FChild", a=t), default=make_inner)))
    data = [{"a": "hello"}]
    form = F(a=data)
    assert form.a.data == data
    assert form.validate()
    form.a.append_entry()
    assert form.a.data == data + [{"a": None}]
    assert not form.validate()

    pdata = DummyPostData({"a-0": ["fake"], "a-0-a": ["foo"], "a-1-a": ["bar"]})
    form = F(pdata, a=data)
    assert form.a.data == [{"a": "foo"}, {"a": "bar"}]

    inner_obj = make_inner()
    inner_list = [inner_obj]
    obj = AttrDict(a=inner_list)
    form.populate_obj(obj)
    assert obj.a is not inner_list
    assert len(obj.a) == 2
    assert obj.a[0] is inner_obj
    assert obj.a[0].a == "foo"
    assert obj.a[1].a == "bar"

    # Test failure on populate
    obj2 = AttrDict(a=42)
    with pytest.raises(TypeError):
        form.populate_obj(obj2)
コード例 #13
0
def test_custom_separator():
    F = make_form(a=FieldList(t, separator="_"))

    pdata = DummyPostData({"a_0": "0_a", "a_1": "1_a"})
    f = F(pdata)
    assert f.a[0].data == "0_a"
    assert f.a[1].data == "1_a"
コード例 #14
0
ファイル: test_fields.py プロジェクト: yd5011/wtforms
    def test_enclosed_subform(self):
        def make_inner():
            return AttrDict(a=None)

        F = make_form(
            a=FieldList(FormField(make_form("FChild", a=self.t), default=make_inner))
        )
        data = [{"a": "hello"}]
        form = F(a=data)
        self.assertEqual(form.a.data, data)
        self.assertTrue(form.validate())
        form.a.append_entry()
        self.assertEqual(form.a.data, data + [{"a": None}])
        self.assertFalse(form.validate())

        pdata = DummyPostData({"a-0": ["fake"], "a-0-a": ["foo"], "a-1-a": ["bar"]})
        form = F(pdata, a=data)
        self.assertEqual(form.a.data, [{"a": "foo"}, {"a": "bar"}])

        inner_obj = make_inner()
        inner_list = [inner_obj]
        obj = AttrDict(a=inner_list)
        form.populate_obj(obj)
        self.assertTrue(obj.a is not inner_list)
        self.assertEqual(len(obj.a), 2)
        self.assertTrue(obj.a[0] is inner_obj)
        self.assertEqual(obj.a[0].a, "foo")
        self.assertEqual(obj.a[1].a, "bar")

        # Test failure on populate
        obj2 = AttrDict(a=42)
        self.assertRaises(TypeError, form.populate_obj, obj2)
コード例 #15
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
    def test_basic(self):
        d = datetime(2008, 5, 5, 4, 30, 0, 0).time()
        # Basic test with both inputs
        form = self.F(DummyPostData(a=["4:30"], b=["04:30"]))
        assert form.a.data == d
        assert form.a(
        ) == """<input id="a" name="a" type="time" value="4:30">"""
        assert form.b.data == d
        assert form.b(
        ) == """<input id="b" name="b" type="time" value="04:30">"""
        assert form.validate()

        # Test with a missing input
        form = self.F(DummyPostData(a=["04"]))
        assert not form.validate()
        assert form.a.errors[0] == "Not a valid time value"
コード例 #16
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
 def test_validate_choices_when_empty(self):
     F = make_form(a=SelectField(choices=[]))
     form = F(DummyPostData(a=["b"]))
     assert not form.validate()
     assert form.a.data == "b"
     assert len(form.a.errors) == 1
     assert form.a.errors[0] == "Not a valid choice"
コード例 #17
0
ファイル: test_select.py プロジェクト: owgreen/wtforms
def test_default_coerce():
    F = make_form(a=SelectField(choices=[("a", "Foo")]))
    form = F(DummyPostData(a=[]))
    assert not form.validate()
    assert form.a.data is None
    assert len(form.a.errors) == 1
    assert form.a.errors[0] == "Not a valid choice."
コード例 #18
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
 def test_dont_validate_choices(self):
     F = make_form(
         a=SelectField(choices=[("a", "Foo")], validate_choice=False))
     form = F(DummyPostData(a=["b"]))
     assert form.validate()
     assert form.a.data == "b"
     assert len(form.a.errors) == 0
コード例 #19
0
 def test_basic_impl(self):
     form = self.F()
     assert 'csrf_token' in form
     assert not form.validate()
     self.assertEqual(form.csrf_token._value(), 'dummytoken')
     form = self.F(DummyPostData(csrf_token='dummytoken'))
     assert form.validate()
コード例 #20
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
 def test_coerce_fail(self):
     form = self.F(b=["a"])
     assert form.validate()
     assert form.b.data is None
     form = self.F(DummyPostData(b=["fake"]))
     assert not form.validate()
     assert form.b.data == [1, 3]
コード例 #21
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
 def test_with_data(self):
     form = self.F(DummyPostData(a=['btest']))
     self.assertEqual(form.a.data, 'btest')
     self.assertEqual(
         form.a(),
         """<select id="a" name="a"><option value="a">hello</option><option selected value="btest">bye</option></select>"""
     )
コード例 #22
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
    def test_file_field_without_file_input(self):
        class F(Form):
            file = FileField(widget=TextInput())

        f = F(DummyPostData(file=["test.txt"]))
        assert f.file.data == "test.txt"
        assert f.file() == '<input id="file" name="file" type="text">'
コード例 #23
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
 def test_coerce_fail(self):
     form = self.F(b=['a'])
     assert form.validate()
     self.assertEqual(form.b.data, None)
     form = self.F(DummyPostData(b=['fake']))
     assert not form.validate()
     self.assertEqual(form.b.data, [1, 3])
コード例 #24
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
 def test_basic(self):
     d = date(2008, 5, 7)
     form = self.F(DummyPostData(a=["2008-05-07"], b=["05/07", "2008"]))
     assert form.a.data == d
     assert form.a._value() == "2008-05-07"
     assert form.b.data == d
     assert form.b._value() == "05/07 2008"
コード例 #25
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
 def test_basic(self):
     d = date(2008, 5, 7)
     form = self.F(DummyPostData(a=['2008-05-07'], b=['05/07', '2008']))
     self.assertEqual(form.a.data, d)
     self.assertEqual(form.a._value(), '2008-05-07')
     self.assertEqual(form.b.data, d)
     self.assertEqual(form.b._value(), '05/07 2008')
コード例 #26
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
 def test_failure(self):
     form = self.F(DummyPostData(a=["2008-bb-cc"], b=["hi"]))
     assert not form.validate()
     assert len(form.a.process_errors) == 1
     assert len(form.a.errors) == 1
     assert len(form.b.errors) == 1
     assert form.a.process_errors[0] == "Not a valid date value"
コード例 #27
0
ファイル: fields.py プロジェクト: zhaoshiling1017/wtforms
    def test_basic(self):
        d = datetime(2008, 5, 5, 4, 30, 0, 0).time()
        # Basic test with both inputs
        form = self.F(DummyPostData(a=['4:30'], b=['04:30']))
        self.assertEqual(form.a.data, d)
        self.assertEqual(
            form.a(), """<input id="a" name="a" type="text" value="4:30">""")
        self.assertEqual(form.b.data, d)
        self.assertEqual(
            form.b(), """<input id="b" name="b" type="text" value="04:30">""")
        self.assertTrue(form.validate())

        # Test with a missing input
        form = self.F(DummyPostData(a=['04']))
        self.assertFalse(form.validate())
        self.assertEqual(form.a.errors[0], 'Not a valid time value')
コード例 #28
0
ファイル: test_fields.py プロジェクト: vvvrrooomm/wtforms
    def test_failure(self):
        form = self.F(DummyPostData(a=["2008-bb"]))

        assert not form.validate()
        assert 1 == len(form.a.process_errors)
        assert 1 == len(form.a.errors)
        assert "Not a valid date value" == form.a.process_errors[0]
コード例 #29
0
ファイル: test_locale_babel.py プロジェクト: zengqiu/wtforms
 def _fail_parse(self, raw_val, expected_error, locales=unset_value):
     meta = None
     if locales is not unset_value:
         meta = {"locales": locales}
     form = self.F(DummyPostData(a=raw_val), meta=meta)
     assert not form.validate()
     self.assertEqual(form.a.errors[0], expected_error)
コード例 #30
0
ファイル: test_fields.py プロジェクト: yd5011/wtforms
 def test_validate_choices(self):
     F = make_form(a=SelectField(choices=[("a", "Foo")]))
     form = F(DummyPostData(a=["b"]))
     assert not form.validate()
     self.assertEqual(form.a.data, "b")
     self.assertEqual(len(form.a.errors), 1)
     self.assertEqual(form.a.errors[0], "Not a valid choice")