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
|
from tests.common import DummyPostData
from wtforms import Form
from wtforms import StringField
from wtforms.validators import readonly
def test_readonly():
class F(Form):
ro = StringField(validators=[readonly()])
form = F(ro="foobar")
assert "readonly" in form.ro.flags
assert form.ro() == '<input id="ro" name="ro" readonly type="text" value="foobar">'
assert form.validate()
form = F(DummyPostData(ro=["foobar"]), data={"ro": "foobar"})
assert form.validate()
form = F(DummyPostData(ro=["foobar"]), data={"ro": "foobarbaz"})
assert not form.validate()
form = F(DummyPostData(ro=["foobar"]))
assert not form.validate()
def test_readonly_with_default():
class F(Form):
ro = StringField(validators=[readonly()], default="foobar")
form = F(DummyPostData(ro=["foobar"]))
assert form.validate()
form = F(DummyPostData(ro=["foobar"]), data={"ro": "foobarbaz"})
assert not form.validate()
form = F(DummyPostData(ro=["foobarbaz"]), data={"ro": "foobarbaz"})
assert form.validate()
|